2010-08-16 7 views
23

Dans R, j'ai deux vecteurs:élément par élément signifie en R

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

Comment puis-je trouver la moyenne élément par élément des deux vecteurs, la suppression NA, sans une boucle? à savoir que je veux obtenir le vecteur de

(1, 4, 5, 6) 

Je sais que la fonction mean(), je sais que l'argument na.rm = 1. Mais je ne sais pas comment mettre les choses ensemble. Pour être sûr, en réalité j'ai des milliers de vecteurs avec NA apparaissant à divers endroits, donc toute solution dépendant de la dimension ne fonctionnerait pas. Merci.

Répondre

31

que diriez-vous:

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

ou

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

Ok, ce sont cool. Mais pour obtenir ce que je voulais vous devez toujours ajouter 'na.rm = 1', et cela résout mon problème. THX. – Zhang18

+0

Je viens d'ajouter les arguments na.rm. – Greg

+0

'colSums' et' rowSums' existent aussi @ Zhang18, FYI. – Vince

3

Je ne suis pas sûr de ce que vous demandez, mais ne

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

faire ce que vous voulez?

+0

Oui, cela fonctionne aussi. THX. – Zhang18

+6

La section Détails de? ColMeans et? RowMeans explique que ces fonctions sont beaucoup plus rapides qu'appliquer avec fun = mean car elles sont implémentées pour la vitesse. – Greg

Questions connexes