2010-08-16 8 views
23

In R, ho due vettori:Element-saggio significare in R

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

come faccio a trovare la media elemento-saggio dei due vettori, eliminando NA, senza un ciclo? vale a dire che voglio ottenere il vettore di

(1, 4, 5, 6) 

So che la funzione mean(), so che l'argomento na.rm = 1. Ma non so come mettere insieme le cose. A dire il vero, in realtà ho migliaia di vettori con NA che appaiono in vari punti, quindi qualsiasi soluzione dipendente dalla dimensione non funzionerebbe. Grazie.

risposta

31

come circa:

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

o

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

Ok, quelli sono fantastici. Ma per ottenere quello che volevo devi ancora aggiungere 'na.rm = 1', e questo risolve il mio problema. Grazie. – Zhang18

+0

Ho appena aggiunto gli argomenti na.rm. – Greg

+0

'colSums' e' rowSums' esistono anche @ Zhang18, FYI. – Vince

3

Io non sono esattamente sicuro di quello che stai chiedendo, ma fa

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

fare quello che vuoi?

+0

Sì, anche questo funziona. grazie. – Zhang18

+6

La sezione Dettagli di? ColMeans e? RowMeans spiega che queste funzioni sono molto più veloci di quelle applicate con fun = mean mentre vengono implementate per la velocità. – Greg