Ich muss zwei data.frames mithilfe einer benutzerdefinierten Funktion binden. Als Beispiel stellen wir uns vor, dass die Datenrahmen so aussehen.Unquoting Variable in benutzerdefinierten Funktion
library(dplyr)
library(lazyeval)
df<-data.frame(type1=c("a","b","c","a","b","c",NA),type2=c("d","e","f","d","e","f","f"))
f<-function(x){
y<-df%>%
dplyr::filter_(lazyeval::interp(~!is.na(x),x=as.name(x)))%>%
dplyr::group_by_(x)%>%
dplyr::summarize("Sum"=sum(type2=="d"))
y<-dplyr::bind_rows(y,data.frame(x="Total",Sum=sum(y$Sum)))
return(y)
}
result_f<-f("type1")
Das Problem ist, dass diese Funktion wird davon ausgegangen, dass der Name der Variablen „Total“ in dem zweiten Datenrahmen ist „x“ anstelle von „Total“ eine zusätzlichen Spalte aufgrund der Nichtübereinstimmung mit dem ersten Datenrahmen zu schaffen.
Wie kann die Funktion x als Variable statt als String interpretieren? Unquoting? Wie?
Es wäre schön, wenn Sie Ihr Beispiel [reproduziert] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) von einschließlich Beispieleingangsdaten und der gewünschten Ausgabe, so dass mögliche Lösungen getestet und verifiziert werden können. – MrFlick
Entschuldigung, ich habe das Skript falsch eingefügt. Ich füge es nur zur Frage hinzu. – ungatoverde