my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Uma solução alternativa que imita o comportamento dessa função e seria mais apropriada para inclusão dentro de um corpo da função:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Algumas pessoas criticam o uso which
como não necessário, mas isso impede que os NA
valores retornem resultados indesejados. O equivalente (.ie, não retornando linhas de NA para nenhum NA de V1 ou V2) às duas opções demonstradas acima sem a opção which
seria:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Nota: quero agradecer ao colaborador anônimo que tentou corrigir o erro no código imediatamente acima, uma correção que foi rejeitada pelos moderadores. Na verdade, houve um erro adicional que eu notei quando corrigi o primeiro. A cláusula condicional que verifica os valores de NA precisa ser a primeira a ser tratada como pretendia, pois ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
A ordem dos argumentos pode ser importante ao usar '& ".