如何用R中的NA平均每3列

时间:2017-04-05 17:52:01

标签: r matrix average

我有一个NA矩阵,我希望找到每行3列的平均值。

set.seed(100)
a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10)

如果我使用

t(apply(a, 1, tapply, gl(3, 3), mean))

代码无法找到包含NA的列的平均值。我想知道如何修改代码。非常感谢。

1 个答案:

答案 0 :(得分:1)

我们可以通过转换为3D数组然后在循环第3个MARGIN后获得rowMeans来实现此目的。

res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE)
all.equal(res, t(apply(a, 1, tapply, gl(3, 3), 
       mean, na.rm = TRUE)), check.attributes = FALSE)
#[1] TRUE