2010-08-16 5 views
23

In R, ich habe zwei Vektoren:Element weise bedeuten in R

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

Wie finde ich die elementweise Mittel der beiden Vektoren, Entfernen von NA, ohne eine Schleife? das heißt ich möchte den Vektor der

(1, 4, 5, 6) 

ich die Funktion mean() kennen lernen, ich kenne das Argument na.rm = 1. Aber ich weiß nicht, wie ich die Dinge zusammenstellen soll. Um sicher zu sein, in Wirklichkeit habe ich Tausende von Vektoren mit NA an verschiedenen Orten, so dass jede dimensionsabhängige Lösung nicht funktionieren würde. Vielen Dank.

Antwort

31

wie etwa:

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

oder

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

Ok, das sind cool. Aber um zu bekommen, was ich wollte, müssen Sie noch 'na.rm = 1' hinzufügen, und das löst mein Problem. Danke. – Zhang18

+0

Ich habe gerade die Argumente na.rm hinzugefügt. – Greg

+0

'colSums' und' rowSums' existieren auch @ Zhang18, FYI. – Vince

3

Ich bin mir nicht ganz sicher, was Sie fordern, aber nicht

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

tun, was Sie wollen?

+0

Ja, das funktioniert auch. Danke. – Zhang18

+6

Der Detailbereich von? ColMeans und? RowMeans erklärt, dass diese Funktionen viel schneller sind als mit fun = mean, da sie für Geschwindigkeit implementiert sind. – Greg