计算R中多个矩阵w/NA值的单元平均值

计算R中多个矩阵w/NA值的单元平均值,r,matrix,R,Matrix,我有几个相同维度的矩阵,我试图计算矩阵的单元格平均值,同时考虑NA值。我不想删除具有一个或多个NA值的单元格,只想在计算中忽略它们。例如,如果我有三个矩阵,a,b和c a c1 c2 1 2 6 2 4 8 b c1 c2 1 NA 4 2 2 6 c c1 c2 1 4 8 2 6 NA 我需要的是一个结果矩阵,d,如下所示 d c1 c2 1 3 6 2

我有几个相同维度的矩阵,我试图计算矩阵的单元格平均值,同时考虑NA值。我不想删除具有一个或多个NA值的单元格,只想在计算中忽略它们。例如,如果我有三个矩阵,a,b和c

a
    c1   c2
1    2    6
2    4    8

b
    c1   c2
1   NA    4
2    2    6

c
    c1   c2
1    4    8
2    6   NA
我需要的是一个结果矩阵,d,如下所示

d
    c1   c2
1    3    6
2    4    7 
…其中,d(3)中单元格[1,1]的值将是a(2)、b(NA)和c(4)中单元格[1,1]的平均值,在这种情况下,仅计算非NA的两个值的平均值。单元格[1,2]d(4)的值将是a(4)、b(2)和c(6)中单元格[1,2]的平均值,依此类推。我不能简单地使用(a+b+c)/3,因为我不是每个单元格都有3个值。在相关的帖子中,我已经看到了这个结果,对于d中的单元格,结果总是NA,其中任何原始矩阵在给定的单元格中都有NA

d
    c1    c2
1    NA    6
2    4    NA 
这似乎应该是一个相对简单的问题,我需要找到一个有效的解决方案,因为我的实际数据集是1200多行和250多列。

我认为应该适合您,使用
na.rm=TRUE
 ar <- array(c(2,4,6,8,NA,2,4,6,4,6,8,NA),c(2,2,3))
apply(ar, c(1,2), mean, na.rm=TRUE)
     [,1] [,2]
[1,]    3    6
[2,]    4    7