Fehler bei der Verwendung von dplyr in einer Funktion

8

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?

    
ari8888 09.12.2015, 19:01
quelle

2 Antworten

15

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%     
jeremycg 09.12.2015, 19:12
quelle
6

AKTUALISIEREN : Ab dplyr 0.7.0 können Sie dies mit cleared eval erledigen.

Weitere Informationen finden Sie Ссылка .

%Vor%     
Brad Cannell 23.06.2017 21:01
quelle

Tags und Links