【问题标题】:Ordered Map / Hash Table in RR中的有序映射/哈希表
【发布时间】:2013-06-13 13:56:09
【问题描述】:

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

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 当前存储了许多 int,double 列表,所以它看起来像: 结果5[[index(int)]][[row]][col]

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

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

【问题讨论】:

    标签: r hashtable associative-array


    【解决方案1】:

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

    使用散列包使用散列转换它:

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

    如果它需要访问调用 结果6[[toString(id)]] 由于性能差异很小,尽管在代码中包含 toString 仍然相当烦人。

    【讨论】:

      【解决方案2】:

      不清楚你的问题到底是什么,但从循环的结构来看,你可能想要

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

      而不是result5[[id]] &lt;- getPrices(id)

      【讨论】:

      • 在这种情况下,只使用 lapply 会更简单,问题是由于 id != i,我想将值存储为与它所基于的 id 相关联,而不是随机数.
      猜你喜欢
      • 2016-08-04
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 2012-11-25
      • 1970-01-01
      相关资源
      最近更新 更多