gpt4 book ai didi

r - 在 R 中获取矩阵列的加权和的最快方法

转载 作者:行者123 更新时间:2023-12-04 10:30:53 25 4
gpt4 key购买 nike

我需要矩阵每一列的加权和。

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),那就太好了。

谢谢,感谢任何见解!

最佳答案

colSums*都是内部或原始函数,将比 apply 快得多方法

您可以尝试的另一种方法是在寻找时使用一些基本的矩阵代数

 weights %*% data

矩阵乘法方法似乎并不快,但它会避免创建大小为 data 的临时对象。
system.time({.y <- colSums(data * weights)})
## user system elapsed
## 0.12 0.03 0.16


system.time({.x <- weights %*% data})
## user system elapsed
## 0.20 0.05 0.25

关于r - 在 R 中获取矩阵列的加权和的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com