2010-08-16 8 views
23

En R, tengo dos vectores:elemento a elemento significar en R

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

¿Cómo puedo encontrar la media elemento a elemento de los dos vectores, la eliminación de NA, sin un bucle? es decir, quiero obtener el vector de

(1, 4, 5, 6) 

Sé que la función mean(), sé el argumento na.rm = 1. Pero no sé cómo armar las cosas. Para estar seguro, en realidad tengo miles de vectores con NA apareciendo en varios lugares, por lo que cualquier solución dependiente de la dimensión no funcionaría. Gracias.

Respuesta

31

¿qué tal:

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

o

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

Ok, esos son geniales. Pero para obtener lo que quería, necesita agregar 'na.rm = 1', y eso resuelve mi problema. Gracias. – Zhang18

+0

Acabo de agregar los argumentos na.rm. – Greg

+0

'colSums' y' rowSums' también existen @ Zhang18, FYI. – Vince

3

No estoy exactamente seguro de lo que está pidiendo, pero ¿

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

hacer lo que quiera?

+0

Sí, esto también funciona. Gracias. – Zhang18

+6

La sección de detalles de? ColMeans y? RowMeans explica que estas funciones son mucho más rápidas que aplicar con fun = mean ya que están implementadas para la velocidad. – Greg

Cuestiones relacionadas