【发布时间】:2012-10-28 04:57:01
【问题描述】:
我需要矩阵每一列的加权和。
data <- matrix(1:2e7,1e7,2) # warning large number, will eat up >100 megs of memory
weights <- 1:1e7/1e5
system.time(colSums(data*weights))
system.time(apply(data,2,function(x) sum(x*weights)))
all.equal(colSums(data*weights), apply(data,2,function(x) sum(x*weights)))
通常colSums(data*weights) 比应用调用更快。
我经常做这个操作(在一个大矩阵上)。因此,寻求有关最有效实施的建议。理想情况下,如果我们可以将权重传递给 colSums(或 rowSums),那就太好了。
谢谢,感谢任何见解!
【问题讨论】: