Bei der Arbeit mit Datenrahmen ist es üblich, eine Teilmenge zu benötigen. Von der Verwendung der Teilmengenfunktion wird jedoch abgeraten. Das Problem mit dem folgenden Code ist, dass der Name des Datenrahmens zweimal wiederholt wird. Wenn Sie & Paste und Munge-Code kopieren, ist es leicht, versehentlich die zweite Erwähnung von ADF nicht zu ändern, die eine Katastrophe sein kann.In R subsetting ohne Verwendung von subset() und verwenden [in prägnanter Weise, um Tippfehler zu vermeiden?
adf=data.frame(a=1:10,b=11:20)
print(adf[which(adf$a>5),]) ##alas, adf mentioned twice
print(with(adf,adf[{a>5},])) ##alas, adf mentioned twice
print(subset(adf,a>5)) ##alas, not supposed to use subset
Gibt es eine Möglichkeit, das oben genannte zu schreiben, ohne adf zweimal zu erwähnen? Leider mit with() oder innerhalb(), ich kann nicht scheinen, auf adf als Ganzes zuzugreifen?
Die Teilmenge (...) Funktion könnte es leicht machen, aber sie warnen, es nicht zu benutzen:
Dies ist eine Komfortfunktion interaktiv zur bestimmungsgemäßen Verwendung. Für die Programmierung ist es besser, die Standard-Subsetting-Funktionen wie [zu verwenden, und insbesondere die nicht standardisierte Auswertung der Argument-Teilmenge kann unerwartete Konsequenzen haben.
Verwendung von 'filter' aus' dplyr'. d. h. "filter (adf, a> 5)" ist ähnlich wie "subset". Wenn Sie 'data.table' verwenden. 'setDT (adf) [a> 5]' – akrun
Ich bin mit @akrun hier und gestoppt mit 'data.frames' vor langer Zeit. Sobald Sie Ihren Datensatz in eine "data.table" konvertieren, wird Ihre gesamte Syntax viel kürzer. Obwohl ich nur erwähnen möchte, dass Sie hier viel zu viel Code verwenden. Du brauchst weder 'print' noch' what', nur 'adf [adf $ a> 5,]' wirst tun, was mir wiederum nicht zu verwirrend erscheint. –
Wenn Sie wissen möchten, warum die Verwendung von 'subset()' nicht empfohlen wird, sehen Sie sich bitte diese SO-Frage an (http://stackoverflow.com/questions/9860090/in-r-why-is- besser als Teilmenge). – MERose