给定矩阵列表:
temp <- list(matrix(c(1,8,3,400), 2),
matrix(c(5,2,300,14),2),
matrix(c(100,200,12,4),2)
)
temp
# [[1]]
# [,1] [,2]
# [1,] 1 3
# [2,] 8 400
#
# [[2]]
# [,1] [,2]
# [1,] 5 300
# [2,] 2 14
#
# [[3]]
# [,1] [,2]
# [1,] 100 12
# [2,] 200 4
我想要矩阵的逐元素中位数:
[,1] [,2]
[1,] 5 12
[2,] 8 14
可以在没有显式for循环的情况下完成此操作吗?
首先,将其放入数组中:
library(abind)
a <- do.call(abind, c(temp, list(along=3)))
然后使用apply
:
apply(a, 1:2, median)
# [,1] [,2]
# [1,] 5 12
# [2,] 8 14
正如@RichardScriven建议的那样,您也可以在a
没有abind软件包的情况下进行构建:
a <- array(unlist(temp), c(2, 2, 3))
# or
a <- array(unlist(temp), c(dim(temp[[1]]), length(temp)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句