2010-08-16 20 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