Ich versuche, eine Funktion zusammenzustellen, die eine Teilmenge von meinem ursprünglichen Datenrahmen erstellt, und dann dplyrs SELECT und MUTATE verwendet, um mir die Anzahl der großen / kleinen Einträge basierend auf der Summe der Breite und Länge von Kelchblätter.
%Vor%Grundsätzlich möchte ich, dass die Funktion die Anzahl der großen Blumen zurückgibt. Wenn ich jedoch die Funktion ausführe, bekomme ich den folgenden Fehler -
%Vor%Was mache ich falsch?
Sie stoßen auf NSE / SE-Probleme, siehe die Vignette für weitere Informationen .
Kurz gesagt, verwendet dplyr
eine Nicht-Standard-Auswertung (NSE) von Namen, und das Übergeben von Spaltennamen an Funktionen bricht sie, ohne die Standardauswertungsversion (SE) zu verwenden.
Die SE-Versionen der dplyr
-Funktionen enden in _. Sie können sehen, dass select_
gut mit Ihren ursprünglichen Argumenten zusammenarbeitet.
Bei der Verwendung von Funktionen wird es jedoch komplizierter. Wir können lazyeval::interp
verwenden, um die meisten Funktionsargumente in Spaltennamen umzuwandeln, siehe die Umwandlung des mutate
zu mutate_
Aufrufs in Ihrer Funktion unten und allgemeiner die Hilfe: ?lazyeval::interp
Versuchen:
%Vor%AKTUALISIEREN : Ab dplyr 0.7.0 können Sie dies mit cleared eval erledigen.
Weitere Informationen finden Sie Ссылка .
%Vor%