gpt4 book ai didi

R中的行矩阵乘法

转载 作者:行者123 更新时间:2023-12-04 22:55:36 25 4
gpt4 key购买 nike

我有一个维度为 1 亿条记录和 100 列的矩阵。

现在我想将该矩阵乘以rowwise。

我的矩阵乘法示例代码是

df<-as.matrix(mtcars)
result<-apply(df,1,prod)

就我而言,上述语法非常慢。

我试过 rowprods 函数在 Rfast 包裹。
result<-rowprods(mtcars)

但是上述功能给了我空间问题。

注意:我的系统中有 8 GB 内存。

最佳答案

如果您的矩阵太大而无法放入内存,您可以使用包 bigstatsr (免责声明:我是作者)使用存储在磁盘(而不是 RAM)上的数据。使用函数 big_apply使您能够在数据块上应用标准 R 函数(并组合它们)。

library(bigstatsr)
fbm <- FBM(10e6, 100)
# inialize with random numbers
system.time(
big_apply(fbm, a.FUN = function(X, ind) {
print(min(ind))
X[, ind] <- rnorm(nrow(X) * length(ind))
NULL
}, a.combine = 'c')
) # 78 sec

# compute row prods, possibly in parallel
system.time(
prods <- big_apply(fbm, a.FUN = function(X, ind) {
print(min(ind))
matrixStats::rowProds(X[ind, ])
}, a.combine = 'c', ind = rows_along(fbm),
block.size = 100e3, ncores = nb_cores())
) # 22 sec with 1 core and 18 sec with 6 cores

关于R中的行矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48879643/

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