R:减少功能。 Na治疗

时间:2015-12-23 13:41:30

标签: r list na

我对Reduce功能有疑问。 例如,我有一个列表,其中一个元素有一个NA

a<-list(c(1,2),c(2,2),c(1,NA))

我希望使用Reduce函数来平均列表中的元素。

(1+2+1)/3=1.33(2+2+NA)/3 = NA但在最后一种情况下,我真正需要的是避免使用NA,因此结果应为(2+2)/2 = 2,因此最终结果为向量{ {1}}

我正在使用1.33, 2,但由于NA元素,我得到Reduce("+", a)/length(a)

提前致谢

1 个答案:

答案 0 :(得分:9)

我不会使用Reduce。无论如何,它只是一个隐藏的for循环。这是一个更好的选择:

rowMeans(do.call(cbind, a), na.rm = TRUE)
#[1] 1.333333 2.000000

这会将您的矢量合并到一个矩阵中,并使用rowMeans函数计算行的均值,这可以删除NA个值。