vectores valores vacio una tabla propios filas eliminar crear contar con como r max min na missing-data

vacio - valores y vectores propios en r



Eliminar los valores de NA de un vector (5)

¿Cómo puedo eliminar los valores de NA de un vector?

Tengo un gran vector que tiene un par de valores de NA , y estoy tratando de encontrar el valor máximo en ese vector (el vector es todos los números), pero no puedo hacerlo debido a los valores de NA.

¿Cómo puedo eliminar los valores NA para poder calcular el máximo?


En caso de que alguien nuevo en R quiera una respuesta simplificada a la pregunta original

¿Cómo puedo eliminar los valores de NA de un vector?

Aquí está:

Supongamos que tiene un vector foo siguiente manera:

foo = c(1:10, NA, 20:30)

length(foo) carrera length(foo) da 22.

nona_foo = foo[!is.na(foo)]

length(nona_foo) es 21, porque los valores de NA se han eliminado.

Recuerde is.na(foo) devuelve una matriz booleana, por lo que indexar foo con el opuesto de este valor le dará todos los elementos que no son NA.


La función na.omit es lo que muchas de las rutinas de regresión usan internamente:

vec <- 1:1000 vec[runif(200, 1, 1000)] <- NA max(vec) #[1] NA max( na.omit(vec) ) #[1] 1000


Probando ?max , verás que en realidad tiene un argumento na.rm = , establecido por defecto en FALSE . (Ese es el valor predeterminado común para muchas otras funciones R, incluidas sum() , mean() , etc.)

Establecer na.rm=TRUE hace exactamente lo que está pidiendo:

d <- c(1, 100, NA, 10) max(d, na.rm=TRUE)

Si quieres eliminar todas las NA , utiliza este modismo en su lugar:

d <- d[!is.na(d)]

Una nota final: otras funciones (por ejemplo, table() , lm() y sort() ) tienen argumentos relacionados con NA que usan nombres diferentes (y ofrecen diferentes opciones). Entonces, si NA causa problemas en una llamada a función, vale la pena buscar una solución integrada entre los argumentos de la función. He encontrado que generalmente hay uno ya allí.


Puede llamar a max(vector, na.rm = TRUE) . De manera más general, puede usar la función na.omit() .


?max muestra que hay un parámetro adicional na.rm que puede establecer en TRUE .

Aparte de eso, si realmente quieres eliminar las NA , solo usa algo como:

myvec[!is.na(myvec)]