在R中的列表中添加元素的最快方法

受体1
zii=list()
zii[[1]]=c(1,2,3)
zii[[2]]=c(1,2,3)
zii[[3]]=c(1,2,3)

在列表中执行元素逐个加法的最佳方法是什么,即IE:sum=c(1+1+1,2+2+2,3+3+3)=c(3,6,9)我尝试过Reduce("+",zii),它很慢。还有其他建议吗?

红外光谱

我不确定是否会更快。data.frame做了很多有效性检查:

> rowSums(data.frame(zii))
[1] 3 6 9

如果您转而使用microbenchmark,也可以尝试这些方法。我猜测其中之一将获胜,而我的钱将用于第二个。:

> rowSums(do.call(cbind, zii))
[1] 3 6 9
> colSums(do.call(rbind, zii))
[1] 3 6 9

看起来我输了赌注:

require(microbenchmark)
microbenchmark(   Reduce("+",zii) , 
                  rowSums(data.frame(zii)),
                  rowSums(do.call(cbind, zii)),
                  colSums(do.call(rbind, zii)) )
#------------------------------------------------------
Unit: microseconds
                         expr     min       lq      mean   median       uq
             Reduce("+", zii)  26.975  28.1870  31.02119  30.0560  30.9695
     rowSums(data.frame(zii)) 730.933 744.9015 776.36775 753.5785 787.2765
 rowSums(do.call(cbind, zii))  65.770  67.3800  71.94039  68.7050  70.1335
 colSums(do.call(rbind, zii))  61.202  62.8830  66.21362  64.1060  65.9130
      max neval cld
   57.958   100 a  
 1129.953   100   c
  176.627   100  b 
  127.259   100  b 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章