my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Una solución alternativa que imita el comportamiento de esta función y sería más apropiada para su inclusión dentro del cuerpo de una función:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Algunas personas critican el uso de which
como no necesario, pero impide que los NA
valores arrojen resultados no deseados. El equivalente (.ie no devolver filas de NA para ningún NA en V1 o V2) a las dos opciones demostradas anteriormente sin el which
sería:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Nota: Quiero agradecer al contribuyente anónimo que intentó corregir el error en el código inmediatamente anterior, una solución que fue rechazada por los moderadores. En realidad hubo un error adicional que noté cuando estaba corrigiendo el primero. La cláusula condicional que verifica los valores de NA debe ser primero si se va a manejar como pretendía, ya que ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
El orden de los argumentos puede ser importante cuando se usa '& ".