具有NA的矩阵的总和列表

时间:2017-03-06 14:40:42

标签: r matrix

我想计算矩阵之和并忽略所包含的任何NAs,如下例所示:

x1 <- matrix(c(NA,NA,2,2),2,2)
x2 <- matrix(c(NA,3,NA,NA),2,2)
x3 <- matrix(c(NA,NA,NA,NA),2,2)
x4 <- matrix(c(1,2,3,4),2,2)
lx <- list(x1,x2,x3,x4)
Reduce('+',lx) # does not work because of NAs

result <- matrix(c(1,5,5,6),2,2)

所以结果应该是:

      [,1] [,2]
[1,]    1    5
[2,]    5    6

如何做到这一点?

1 个答案:

答案 0 :(得分:2)

我们可以编写自定义函数并在Reduce中使用它。我们将NA替换为0&#39;然后我们添加它们。

modifiedSum <- function(x, y) {
  replace(x, is.na(x), 0) + replace(y, is.na(y), 0)
}

Reduce(modifiedSum, lx)

#     [,1] [,2]
#[1,]    1    5
#[2,]    5    6