R:减少功能。钠处理

R: Reduce function. Na treatment

我对 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.33, 2

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

提前致谢

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

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

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