是否存在R函数,用于对作为单个列表对象中的元素存储的矩阵进行元素求和?

Fai*_*Ice 10 r

可能重复:
对矩阵列表求和将
元素列表逐个元素添加在一起

我有一个R列表对象.列表的每个元素包含3乘3矩阵.我想在元素方面总结所有矩阵.那是:

 myList <- list();
 myList[[1]] <- matrix(1:9,3,3)
 myList[[2]] <- matrix((1:9)*10,3,3)
Run Code Online (Sandbox Code Playgroud)

然后我想要最终的输出输出

myList[[1]]+myList[[2]]

      [,1] [,2] [,3]
 [1,]   11   44   77
 [2,]   22   55   88
 [3,]   33   66   99
Run Code Online (Sandbox Code Playgroud)

当然我可以为这个计算写一个循环但是R中的循环非常慢.R有内置功能吗?

GSe*_*See 19

?Reduce.

从示例:

## A general-purpose adder:
add <- function(x) Reduce("+", x)
Run Code Online (Sandbox Code Playgroud)

然后你可以

add(myList)
Run Code Online (Sandbox Code Playgroud)

  • +1我不记得了,很好的答案! (2认同)

Pau*_*tra 5

或者,您可以将数据放在多维数组而不是列表中,然后使用apply它.

require(abind)
m = abind(matrix(1:9,3,3), matrix((1:9)*10,3,3), along = 3)
Run Code Online (Sandbox Code Playgroud)

产生三维数组.然后使用apply:

apply(m, 1:2, sum)
Run Code Online (Sandbox Code Playgroud)

免责声明:我没有测试此代码,因为我现在没有R可用.但是,我确实希望您了解此选项.