Wenn ich einen data.frame filtern muss, d.h. Zeilen extrahieren, die bestimmte Bedingungen erfüllen, verwende ich lieber die subset
Funktion:
subset(airquality, Month == 8 & Temp > 90)
Anstatt die [
Funktion:
airquality[airquality$Month == 8 & airquality$Temp > 90, ]
Es gibt zwei Hauptgründe für meine Präferenz:
-
Ich finde, der Code liest sich besser von links nach rechts. Selbst Leute, die nichts über R wissen, können erkennen, was die
subset
Anweisung oben tut. -
Da Spalten als Variablen in der Datei
select
Ausdruck kann ich einige Tastenanschläge einsparen. In meinem obigen Beispiel musste ich nur Folgendes eingebenairquality
einmal mitsubset
sondern dreimal mit[
.
Ich lebte also glücklich, indem ich subset
überall, weil es kürzer ist und sich besser liest, und ich habe sogar meine R-Kollegen von seiner Schönheit überzeugt. Doch gestern brach meine Welt zusammen. Beim Lesen der subset
Dokumentation ist mir dieser Abschnitt aufgefallen:
Warnung
Dies ist eine Komfortfunktion, die für den interaktiven Einsatz gedacht ist. Für die Programmierung ist es besser, die Standardfunktionen zur Unterteilung wie [ zu verwenden, und insbesondere die nicht standardmäßige Auswertung des Arguments Untermenge kann unvorhergesehene Folgen haben.
Könnte jemand klären, was die Autoren meinen?
Erstens: Was meinen sie mit " zur interaktiven Nutzung "? Ich weiß, was eine interaktive Sitzung ist, im Gegensatz zu einem Skript, das im BATCH-Modus ausgeführt wird, aber ich verstehe nicht, was das für einen Unterschied machen soll.
Könnten Sie dann bitte erklären " die nicht standardmäßige Bewertung der Argumentteilmenge " und warum es gefährlich ist, vielleicht mit einem Beispiel?