我有几个矩阵但为了简单起见,我只提供了一些例子。 假设我们有两个矩阵A和B. 我想计算出A和B的平均值
A = matrix(
c(2, 4, 3, 1, 5, 7), # the data elements
nrow=2, # number of rows
ncol=3, # number of columns
byrow = TRUE)
B = matrix(
c(2, 4, 6, 1, 4, 8), # the data elements
nrow=2, # number of rows
ncol=3, # number of columns
byrow = TRUE)
> A
[,1] [,2] [,3]
[1,] 2 4 3
[2,] 1 5 7
> B
[,1] [,2] [,3]
[1,] 2 4 6
[2,] 1 4 8
所以我想要的意思是: 这可以很容易地完成:
A+B/2
但我有超过100个矩阵,所以我不能使用它,所以我尝试使用
mat <- list(A, B)
x<- do.call(rbind,(lapply(mat,FUN = mean)))
但是这计算了每个矩阵的均值:
> x
[,1]
[1,] 6
[2,] 6
任何想法?
答案 0 :(得分:1)
以下内容可以满足您的需求吗?
使用Reduce
将list
矩阵添加到一起。
X <- list(A, B)
Reduce("+", X)
# [,1] [,2] [,3]
# [1,] 4 8 9
# [2,] 2 9 15
将输出除以length
的{{1}}。
list
答案 1 :(得分:1)
这可能很有用
> # your list of matrices
> mat <- list(A, B)
>
> # sum
> Reduce("+", mat)
[,1] [,2] [,3]
[1,] 4 8 9
[2,] 2 9 15
>
> # mean
> apply(simplify2array(mat), 1:2, mean)
[,1] [,2] [,3]
[1,] 2 4.0 4.5
[2,] 1 4.5 7.5