2010-08-16 16 views
23

在R,我有两个向量:逐元素意味着R中

a <- c(1, 2, 3, 4) 
b <- c(NA, 6, 7, 8) 

如何找到两个向量的逐元素平均,除去NA,没有一个循环?即我想要得到的

(1, 4, 5, 6) 

矢量我知道函数mean(),我知道参数na.rm = 1。但我不知道如何把事情放在一起。可以肯定的是,实际上,我有数以千计的NA出现在各个地方的向量,所以任何依赖于维度的解决方案都不起作用。谢谢。

回答

31

怎么样:

rowMeans(cbind(a, b), na.rm=TRUE) 

colMeans(rbind(a, b), na.rm=TRUE) 
+0

好吧,那些很酷。但为了得到我想要的东西,你仍然需要添加'na.rm = 1',这就解决了我的问题。谢谢。 – Zhang18 2010-08-16 21:34:10

+0

我刚刚添加了na.rm参数。 – Greg 2010-08-16 21:34:33

+0

'colSums'和'rowSums'也存在@ Zhang18,FYI。 – Vince 2010-08-16 22:19:43

3

我不完全相信你问什么,但你要什么

apply(rbind(a,b),2,mean,na.rm = TRUE) 

吗?

+0

是的,这也适用。谢谢。 – Zhang18 2010-08-16 21:42:24

+6

?colMeans和?rowMeans的Details部分解释了这些函数比用fun = mean应用要快得多,因为它们是为速度而实现的。 – Greg 2010-08-16 21:58:28