
Hola a todos,

¿alguien podría explicarme por qué en una asignación en el término de la izquierda no es necesario "!is.na(...)", mientras que en el término de la derecha sí?

En general, ¿cómo funcionan los NA's?, es decir, ¿cuándo hay que tenerlos en cuenta y cuándo no?

Pongo un ejemplo:

a<-c(1:5,NA,7:9,NA)
b<-c("a","b","c","d","e","f","g","h","i","j")
c<-data.frame(b,a)
c

#   b  a
#1  a  1
#2  b  2
#3  c  3
#4  d  4
#5  e  5
#6  f NA
#7  g  7
#8  h  8
#9  i  9
#10 j NA

c$b[c$a<7]<-"a" # EN LA FILA 6 COMO HAY UN NA, NO SE PONE "a" EN LA COLUMNA b
c

#   b  a
#1  a  1
#2  a  2
#3  a  3
#4  a  4
#5  a  5
#6  f NA
#7  g  7
#8  h  8
#9  i  9
#10 j NA

aux<-c[c$a<8,] # ME SELECCIONA LOS QUE SON <8, PERO ADEMÁS ME PONE TANTAS FILAS CON NA's COMO NA's HAY EN EL DATA.FRAME!
aux

#        b  a
#1       a  1
#2       a  2
#3       a  3
#4       a  4
#5       a  5
#NA   <NA> NA
#7       g  7
#NA.1 <NA> NA

aux<-c[c$a<8 & !is.na(c$a),] # SI PONGO "& !is.na(c$a)", ME SELECCIONA EXACTAMENTE LO QUE QUERÍA!
aux

#  b a
#1 a 1
#2 a 2
#3 a 3
#4 a 4
#5 a 5
#7 g 7

Gracias por todo,

David.

 		 	   		  
_________________________________________________________________


	[[alternative HTML version deleted]]

