I have a list in which each element is a 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
sd(c(3, 5, 4))
[,1] [,2] [,3]
[1,] 1.00 1.15 1.53
[2,] 1.15 2.08 3.21
[3,] 2.31 4.93 2.89
It is better to convert this to array
by unlist
ing the list
to a vector
, convert it to a 3D array
and get the sd
with apply
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