my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Solusi alternatif yang meniru perilaku fungsi ini dan akan lebih tepat untuk dimasukkan dalam badan fungsi:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Beberapa orang mengkritik penggunaan yang which
tidak diperlukan, tetapi hal itu mencegah NA
nilai - nilai dari melemparkan kembali hasil yang tidak diinginkan. Persamaan (.yaitu tidak mengembalikan baris-NA untuk NA apa pun di V1 atau V2) ke dua opsi yang ditunjukkan di atas tanpa which
akan:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Catatan: Saya ingin berterima kasih kepada kontributor anonim yang berusaha memperbaiki kesalahan dalam kode di atas, perbaikan yang ditolak oleh moderator. Sebenarnya ada kesalahan tambahan yang saya perhatikan ketika saya memperbaiki yang pertama. Klausa bersyarat yang memeriksa nilai-nilai NA perlu menjadi yang pertama jika ingin ditangani seperti yang saya maksudkan, karena ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
Urutan argumen mungkin penting saat menggunakan '& ".