my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Bu işlevin davranışını taklit eden ve bir işlev gövdesine dahil etmek için daha uygun olacak alternatif bir çözüm:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Bazı insanlar kullanımını gereksiz which
olarak eleştirir , ancak NA
değerlerin istenmeyen sonuçları geri vermesini engeller. Yukarıda gösterilen iki seçeneğe eşdeğer (.ie, V1 veya V2'deki herhangi bir NA için NA satırlarını döndürmüyor) which
:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Not: Yukarıdaki koddaki hatayı düzeltmeye çalışan anonim katılımcıya, moderatörler tarafından reddedilen bir düzeltmeye teşekkür etmek istiyorum. Aslında ilkini düzeltirken fark ettiğim ek bir hata vardı. NA değerlerini kontrol eden koşullu cümlenin, istediğim gibi işlenecek olması durumunda ilk olması gerekir, çünkü ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
'& "Kullanılırken argümanların sırası önemli olabilir.