如何计算矩阵的“均值”,“求和”?

时间:2013-11-19 10:34:38

标签: r matrix

我有几个矩阵但为了简单起见,我只提供了一些例子。 假设我们有两个矩阵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

任何想法?

2 个答案:

答案 0 :(得分:1)

以下内容可以满足您的需求吗?

使用Reducelist矩阵添加到一起。

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