我有一个关于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
值。