my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Alternatywne rozwiązanie, które naśladuje zachowanie tej funkcji i byłoby bardziej odpowiednie do włączenia do treści funkcji:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Niektórzy ludzie krytykują użycie which
jako niepotrzebne, ale zapobiega to NA
odrzucaniu niepożądanych wyników przez wartości. Odpowiednik (tj. Nie zwracający wierszy NA dla żadnych NA w wersji V1 lub V2) dwóm opcjom przedstawionym powyżej bez opcji which
byłby:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Uwaga: chcę podziękować anonimowemu współautorowi, który próbował naprawić błąd w kodzie powyżej, poprawka, która została odrzucona przez moderatorów. W rzeczywistości pojawił się dodatkowy błąd, który zauważyłem, poprawiając pierwszy. Klauzula warunkowa, która sprawdza wartości NA, musi być pierwsza, jeśli ma być obsługiwana zgodnie z planem, ponieważ ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
Kolejność argumentów może mieć znaczenie w przypadku używania znaku „&”.