计算R中多个矩阵的均值

Moh*_*rma 6 r

什么是计算相同维度的多个矩阵的平均值的有效方法?

如果A,B是2 x 2矩阵那么,

A
2  3
4  5

B
6  7
8  9
Run Code Online (Sandbox Code Playgroud)

平均值(A,B)应该给出

4  5
6  7
Run Code Online (Sandbox Code Playgroud)

简单的方法是做(A + B + ...)/数量的矩阵.(并明确处理NA值)

任何其他优雅的方法或库(支持na.rm)?

Rol*_*and 9

将它们组合成一个数组并使用apply:

A <- matrix(c(2,4,3,5), 2)
B <- matrix(c(6,8,7,9), 2)

X <- list(A, B)
Y <- do.call(cbind, X)
Y <- array(Y, dim=c(dim(X[[1]]), length(X)))

apply(Y, c(1, 2), mean, na.rm = TRUE)
#     [,1] [,2]
#[1,]    4    5
#[2,]    6    7
Run Code Online (Sandbox Code Playgroud)

如果apply效率不高,您可以使用colMeans(提供NA处理)aperm:

colMeans(aperm(Y, c(3, 1, 2)), na.rm = TRUE)
#     [,1] [,2]
#[1,]    4    5
#[2,]    6    7
Run Code Online (Sandbox Code Playgroud)