大家好,
我正在处理一个包含列表的大型列表。每个子列表都包含n个元素,我想要获取第三个元素,例如:
l = list()
l[[1]] = list(A=runif(1), B=runif(1), C=runif(1))
l[[2]] = list(A=runif(1), B=runif(1), C=runif(1))
l[[3]] = list(A=runif(1), B=runif(1), C=runif(1))
res = sapply(l, function(x) x$C)
res = sapply(l, function(x) x[[3]]) #alternative
但是我的列表包含数千个元素,我需要执行这个操作很多次。那么,有没有更快的方法来执行上面的操作呢?
最好的问候,
Mario
microbenchmark
应该包括对rbindlist
的调用吗?这样做是为了考虑到首先 OP 需要改变格式的情况。 - alexis_lazDT[,C]
可能比DT$C
更快。不建议在数据表中使用$
运算符。或者您可以使用rbindlist(l)[,C]
来使其更短。 - Rich Scrivenrbindlist
,仍然加速了5-6倍。但是我打算用c/c++编写这些内容,因为我不想使用外部软件包。 - user1309940