2013-11-28 82 views
0

我有一個數據幀,其內容看起來像這樣獲取的值,從哈希

V1 V2 
00:00 3 
00:01 5 
00:02 3 
00:03 3 
00:04 1 
00:05 3 

,使之成爲關鍵瓦萊斯哈希我做了一些修改。

mins <- ndata[,1] 
vols <- ndata[,2] 
mins <- as.character(mins) 
vols <- as.character(vols) 
head(mins) # "00:00" "00:01" "00:02" "00:03" "00:04" "00:05" 
head(vols) # "3" "5" "3" "3" "1" "3" 
hh <- hash(keys= mins, values=vols) 
.set(hh,keys= mins, values=vols) 
hh["23:59" ] 
hh$"23:59" 

for(t in ls(hh)) 
{ 
    print(hh$t) # NULL 
    print(hh[ t ]) ## <hash> containing 1 key-value pair(s). 23:57 : 3 
    val <- c(val,hh$t) 
} 

使用HH $其中T是我的迭代變量(它返回NULL),而其他方法發出像<hash> containing 1 key-value pair(s). 23:57 : 3我無法訪問它們。

但是,在具有特定值的循環之外,我可以輕鬆訪問它們。

hh$"23:59"給我預期值[1] "4"。從密鑰中形成的循環內獲取哈希對象的值的正確方法是什麼?

回答

2

這是$[之間的一個相當根本的區別。基本上,您只能在命令行中交互使用前者,並且在編程時僅使用後者。

hh$t將永遠被R解釋爲尋找的東西稱爲t,不叫「存儲在t值」。這就是爲什麼當你直接使用$和(帶引號)的名字時,它會起作用。

尤其請參閱?Extract下的文檔中名爲「遞歸(類列表)對象」一節。