変数名の1つが関数の引数で定義されている関数内でdplyrを使用して2つのテーブルを結合しようとしています。他のdplyr関数では、通常、非標準的な評価に利用できるバージョンがあります。 select
& select_
,rename
およびrename_
などであるが、_join
ファミリーではない。私はthis answerを見つけましたが、私はそれが以下の私のコードで動作させることはできません。最後の試みが与える中にエラーdplyr関数内で2つのテーブルを結合します.1つの変数名は関数の引数です。
にエラーにError: 'gender' column not found in lhs, cannot join,
Error: 'sexvar' column not found in rhs, cannot join
を与える
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')
第一及び第二の試み
少なくともそれは私が列gender
を望んでいることを示していますが、何とかそれは列の見出しとしては見ません。
誰かが間違っていると指摘できますか?
Yesにこれを拡張することも可能であり、それがなかったです、どうもありがとうございました。私は誰かがそのような「よりエレガントな方法」で答えるかどうかを待っています。そうでなければ、私はあなたの答えを受け入れます。もう一度ありがとう –