R 中矩阵列表的标准偏差

Rud*_*son 4 r matrix

我有一个列表,其中每个元素都是一个矩阵。

set.seed(123)

m1 <- matrix(sample(c(1:10), size = 9, replace = TRUE), ncol = 3, nrow = 3)
m2 <- matrix(sample(c(1:10), size = 9, replace = TRUE), ncol = 3, nrow = 3)
m3 <- matrix(sample(c(1:10), size = 9, replace = TRUE), ncol = 3, nrow = 3)

m <- list(m1, m2, m3)
m
[[1]]
      [,1] [,2] [,3]
[1,]    3    9    6
[2,]    8   10    9
[3,]    5    1    6

[[2]]
     [,1] [,2] [,3]
[1,]    5    7    9
[2,]   10    6    3
[3,]    5    2    1

[[3]]
     [,1] [,2] [,3]
[1,]    4    7    7
[2,]   10    7    8
[3,]    9   10    6
Run Code Online (Sandbox Code Playgroud)

我想考虑所有三个矩阵来计算每对的标准偏差。因此对于单元格 [1,1] 的标准偏差为:

sd(c(3, 5, 4))
Run Code Online (Sandbox Code Playgroud)

我的最终矩阵应如下所示:

     [,1] [,2] [,3]
[1,] 1.00 1.15 1.53
[2,] 1.15 2.08 3.21
[3,] 2.31 4.93 2.89
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 R 中实现这一点而无需遍历所有三个矩阵?

提前谢谢了。

akr*_*run 5

最好是将其转换为array通过unlist荷兰国际集团的list一个vector,将其转换为3D array,并获得sdapply

round(apply(array(unlist(m), c(3, 3, 3)), c(1,2), sd),2)
#    [,1] [,2] [,3]
#[1,] 1.00 1.15 1.53
#[2,] 1.15 2.08 3.21
#[3,] 2.31 4.93 2.89
Run Code Online (Sandbox Code Playgroud)