行列の各列の加重和が必要です。行列の列の加重和を取る最速の方法R
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)にウェイトを渡すことができれば素晴らしいでしょう。
ありがとうございました。
ありがとうございます。 – Anirban