my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Альтернативне рішення, яке імітує поведінку цієї функції та було б більш доцільним для включення в функціональний орган:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Деякі люди критикують використання which
як не потрібне, але це заважає NA
цінностям відкидати небажані результати. Еквівалент (. Не повертає NA-рядки для будь-яких NA в V1 або V2) двом варіантам, продемонстрованим вище без which
значень, буде:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Примітка. Я хочу подякувати анонімному дописувачу, який намагався виправити помилку в коді безпосередньо вище, виправлення, яке було відхилено модераторами. Насправді була додаткова помилка, яку я помітив, коли виправляв першу. Умовне застереження, яке перевіряє значення NA, має бути першим, якщо воно обробляється так, як я задумав, оскільки ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
Порядок аргументів може мати значення при використанні "&".