gpt4 book ai didi

r - 如何计算矩阵的总和?

转载 作者:行者123 更新时间:2023-12-03 20:56:43 25 4
gpt4 key购买 nike

我有一个大小为 4 x 10 的矩阵。我想计算总和的所有可能条目的总和。换句话说,如果你有一个 2 x 2 矩阵

2 3
4 1

那么有 2^2 和 (2 + 3, 2 + 1) 和 (4 + 3, and 4 + 1)。同样,如果您有一个 2 x 3 矩阵,则总和为 2^3 = 8。允许重复。由于我的矩阵是 4 x 10,因此总和为 1,048,576。

我究竟如何在 R 中计算这个?伪代码也很好,因为我很确定我可以翻译成 R。但是专门的 R 包/函数会更好。

最佳答案

对于具有任意数量列的矩阵实现此目的的简洁方法是:

rowSums(expand.grid(as.data.frame(m)))
as.data.frame(m)将您的矩阵转换为 data.frame,这意味着它可以直接传递给 expand.grid函数,它将对每一列进行操作。 rowSums有效地计算结果的行总和,与使用 apply 相比,这将显着提高效率。带功能 sum :
m <- matrix(1:40, nrow=4)
system.time(apply(expand.grid(m[,1],m[,2],m[,3],m[,4],m[,5],m[,6],m[,7],m[,8],m[,9],m[,10]),1,sum))
# user system elapsed
# 4.866 0.108 4.971
system.time(rowSums(expand.grid(as.data.frame(m))))
# user system elapsed
# 0.141 0.030 0.171

编辑:正如@Roland 所建议的那样,这并不是特别有效的内存效率,因为它在执行任何添加之前需要列的完整叉积。一个更难阅读但内存效率更高的版本是:
Reduce(function(x, y) rowSums(expand.grid(x, y)), as.data.frame(m))

关于r - 如何计算矩阵的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428501/

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