我想知道一种优雅的方式,允许对列表的数值求和(或计算平均值).例如
x <- list( a = matrix(c(1,2,3,4), nc=2), b = matrix(1, nc=2, nr=2))
Run Code Online (Sandbox Code Playgroud)
并希望得到
x[[1]]+x[[2]]
Run Code Online (Sandbox Code Playgroud)
或者意思是:
(x[[1]]+x[[2]])/2
Run Code Online (Sandbox Code Playgroud) 可能重复:
对矩阵列表求和将
元素列表逐个元素添加在一起
我有一个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有内置功能吗?
如果事先不知道要求和的矩阵数,那么进行分量矩阵加法的最佳方法是什么?更一般地说,有没有一种很好的方法在data.table的上下文中执行矩阵(或多维数组)操作?我data.table通过几个固定变量或类别对数据进行排序和分组的效率,每个变量或类别包含不同数量的观察值.
例如:
这里用2x2矩阵说明,只有一个类别:
library(data.table)
# example data, number of rows differs by category t
N <- 5
dt <- data.table(t = rep(c("a", "b"), each = 3, len = N),
x1 = rep(1:2, len = N), x2 = rep(3:5, len = N),
y1 = rep(1:3, len = N), y2 = rep(2:5, len = N))
setkey(dt, t)
> dt
t x1 x2 y1 y2
1: a 1 3 1 2
2: a 2 4 …Run Code Online (Sandbox Code Playgroud)