R中矩阵列表的元素中值

ved*_*ved 3 r matrix

给定矩阵列表:

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
Run Code Online (Sandbox Code Playgroud)

我想要矩阵的逐元素中位数:

     [,1] [,2]
[1,]    5   12
[2,]    8   14
Run Code Online (Sandbox Code Playgroud)

可以在没有显式for循环的情况下完成此操作吗?

Fra*_*ank 5

首先,将其放入数组中:

library(abind)
a <- do.call(abind, c(temp, list(along=3)))
Run Code Online (Sandbox Code Playgroud)

然后使用apply

apply(a, 1:2, median)
#      [,1] [,2]
# [1,]    5   12
# [2,]    8   14
Run Code Online (Sandbox Code Playgroud)

正如@RichardScriven建议的那样,您也可以在a没有abind软件包的情况下进行构建:

a <- array(unlist(temp), c(2, 2, 3))
# or
a <- array(unlist(temp), c(dim(temp[[1]]), length(temp)))
Run Code Online (Sandbox Code Playgroud)

  • 可以使用a &lt;-array(unlist(temp),c(2,2,3))避免加载abind。 (2认同)