Ich versuche, zwei Tabellen mit dplyr innerhalb einer Funktion, wo einer der Variablennamen durch ein Argument für die Funktion definiert ist. In anderen dplyr-Funktionen ist normalerweise eine Version verfügbar, die für eine nicht standardmßige Auswertung, z. select
& select_
, rename
und rename_
usw., aber nicht für die _join
Familie. Ich fand this answer, aber ich kann es nicht unten in meinem Code zu arbeiten:dplyr Join zwei Tabellen innerhalb einer Funktion, wo ein Variablenname ein Argument für die Funktion ist
df1 <- data.frame(gender = rep(c('M', 'F'), 5), var1 = letters[1:10])
new_join <- function(df, sexvar){
df2 <- data.frame(sex = rep(c('M', 'F'), 10), var2 = letters[20:1])
# initial attempt using usual dplyr behaviour:
# left_join(df, df2, by = c(sexvar = 'sex'))
# attempt using NSE:
# left_join(df, df2,
# by = c(eval(substitute(var), list(var = as.name(sexvar)))) = 'sex'))
# attempt using setNames:
# left_join(df, df2, by = setNames(sexvar, 'sex'))
}
new_join(df1, 'gender')
der ersten und zweiten Versuch geben dem Fehler
Error: 'sexvar' column not found in rhs, cannot join
während der letzte Versuch, den Fehler gibt
Error: 'gender' column not found in lhs, cannot join,
was zumindest zeigt, weiß ich will die Spalte gender
, aber irgendwie sieht es nicht als Spaltenüberschrift.
Kann jemand darauf hinweisen, wo ich falsch liege?
Ja, es zu zwei varialbes zu verlängern haben, vielen Dank. Ich werde warten und sehen, ob jemand mit einer so "eleganteren Art" antwortet, sonst werde ich deine Antwort akzeptieren. Danke nochmal –