my.data.frame <- subset(data , V1 > 2 | V2 < 4)
Eine alternative Lösung, die das Verhalten dieser Funktion nachahmt und für die Aufnahme in einen Funktionskörper besser geeignet wäre:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
Einige Leute kritisieren die Verwendung von which
als nicht erforderlich, aber es verhindert, dass die NA
Werte unerwünschte Ergebnisse zurückwerfen. Das Äquivalent (dh keine NA-Zeilen für NAs in V1 oder V2 zurückgeben) zu den beiden oben gezeigten Optionen ohne das which
wäre:
new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
Hinweis: Ich möchte mich bei dem anonymen Mitwirkenden bedanken, der versucht hat, den Fehler im Code direkt darüber zu beheben. Dieser Fehler wurde von den Moderatoren abgelehnt. Es gab tatsächlich einen zusätzlichen Fehler, den ich bemerkte, als ich den ersten korrigierte. Die Bedingungsklausel, die nach NA-Werten sucht, muss an erster Stelle stehen, wenn sie wie beabsichtigt behandelt werden soll, da ...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
Die Reihenfolge der Argumente kann bei der Verwendung von '& "von Bedeutung sein.