R中的有序映射/哈希表

时间:2013-06-17 14:49:07

标签: r hashtable associative-array

在处理列表时,我注意到了一个我没想到的问题。

result5 <- vector("list",length(queryResults[[1]]))
for(i in 1:length(queryResults[[1]])){
    id <- queryResults[[1]][i]
    result5[[id]] <-getPrices(id)
}

问题是,在运行此代码而不是保持相同大小的结果(w / e queryResults [[1]]之后),它会上升到最后一个索引,在中间创建一堆空条目。

result5 current存储了许多int,double列表,如下所示: result5 [[指数(INT)]] [[行] [COL]

虽然它本身并没有太大问题,但我宁愿避免这样做,只是为了以后更容易进行尺寸计算。

为了澄清,id是一个整数。并且在给定的情况下,循环提供相同的性能,但比应用函数更方便。

2 个答案:

答案 0 :(得分:1)

经过一些测试似乎最简单的方法是:

使用哈希包使用哈希转换它:

result6 <- hash(queryResults[[1]],lapply(queryResults[[1]],getPrices))

如果需要访问呼叫 result6 [[的toString(ID)]] 由于性能差异很小,尽管在代码中包含toString仍然相当烦人。

答案 1 :(得分:0)

目前尚不清楚你的问题究竟是什么,但从循环结构来判断,你可能想要

result5[[i]] <- getPrices(id)

而不是result5[[id]] <- getPrices(id)