从哈希获取值

时间:2013-11-28 02:36:37

标签: r hashmap

我有一个数据框,其内容如下所示,

   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访问它们,其中t是我的迭代器变量(它返回NULL),而其他方法发出类似<hash> containing 1 key-value pair(s). 23:57 : 3的方法。

但是,在具有特定值的循环之外,我可以轻松访问它们。

hh$"23:59"为我提供了期望值[1] "4"。从一个循环内部的哈希对象中获取值的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

$[之间存在相当根本的区别。基本上,您应该只在命令行中以交互方式使用前者,并且在编程时仅使用后者。

hh$t将始终被R解释为寻找名为 t的内容,而不是“t中存储的值”。这就是为什么当你直接使用$和(引用)名称时它会起作用。

特别是,请参阅?Extract下的文档中的“递归(类似列表)对象”一节。