2009-09-08 11 views

Respuesta

1

Si desea eliminar filas que contienen NA, puede usar apply() para aplicar una función rápida para verificar cada fila. Por ejemplo, si su matriz es x,

goodIdx <- apply(x, 1, function(r) !any(is.na(r))) 
newX <- x[goodIdx,] 
5

creo na.rm por lo general sólo funciona dentro de las funciones, por ejemplo para la significa función. Me gustaría ir con complete.cases: http://stat.ethz.ch/R-manual/R-patched/library/stats/html/complete.cases.htm

digamos que tiene la siguiente matriz de 3x3-:

x <- matrix(c(1:8, NA), 3, 3) 

> x 
    [,1] [,2] [,3] 
[1,] 1 4 7 
[2,] 2 5 8 
[3,] 3 6 NA 

entonces se puede obtener los casos completos de esta matriz con

y <- x[complete.cases(x),] 

> y 
    [,1] [,2] [,3] 
[1,] 1 4 7 
[2,] 2 5 8 

La función complete.cases -function devuelve un vector de valores de verdad que indica si un caso está completo o no:

> complete.cases(x) 
[1] TRUE TRUE FALSE 

y luego se indexa las filas de la matriz x y añadir el "" quiere decir que desea que todas las columnas.

6

na.omit() tomará matrices (y marcos de datos) y devolverá solo aquellas filas sin ningún valor de NA - lleva un paso más adelante complete.cases() al eliminar las filas FALSAS por usted.

> x <- data.frame(c(1,2,3), c(4, NA, 6)) 
> x 
    c.1..2..3. c.4..NA..6. 
1   1   4 
2   2   NA 
3   3   6 
> na.omit(x) 
    c.1..2..3. c.4..NA..6. 
1   1   4 
3   3   6