我需要计算矩阵每一列的加权总和。
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)
比apply调用更快。我经常执行此操作(在大矩阵上)。因此,寻求最有效的实现建议。理想情况下,如果我们可以将权重传递给colSums(或rowSums),那就太好了。谢谢,感激任何见解!