私は、その引数の1つとしてユーザからの列名のベクトルをとる関数を記述しようとしています。列名は、dplyr :: mutate内に新しい列を作成するために、データフレームのどの列を貼り付けるかを指定するために使用されます。引数ベクトルの要素を最初に崩壊させてから、崩壊した文字列をmutateで使用しようとしました。これは間違っています。下の最新の試みを見てください。私は他の試みをしましたが、私はdplyr内で新しいquo、enquo、UQ、!!!、!!などを理解していません。誰かが私がする必要があることを示すことができますか?mutate(dplyr)内のpaste()にカラム名のベクトルを渡す
df <- data.frame(.yr = c("2000", "2001", "2002"), .mo = c("12", "01", "02"), .other = rnorm(3))
cols <- colnames(df)[1:2]
do_want <- df %>%
mutate(new = paste(.yr, .mo, sep = "-"))
my_func <- function(dat, vars){
.vars <- paste(vars, collapse = ",")
result <- dat %>%
mutate(new = paste(.vars, sep = "-"))
return(result)
}
my_func(dat = df, vars = cols)
編集:これは私がquoを使って試みたものです。関数定義に追加します。結果は文字列に式を回す代わりにmutate
&の使用mutate_
繰り返し文字列の列にある「.yr、.moという」
my_func <- function(dat, vars){
.vars <- quo(paste(vars, collapse = ","))
result <- dat %>%
mutate(new = paste(!!.vars, sep = "-"))
return(result)
}
ありがとうございます - 私はこのような試みをしましたが、内部のペーストを引用符で囲んでいませんでした。これはうまくいけば、3つのネストされたペーストよりもmutate_を余分にし、よりエレガントな新しいrLang機能を利用したソリューションを誰かが見せることを期待しています。 – mb158127
'mutate_'などは廃止予定です。 –