3
dplyr::left_join
(およびfriends)のby
引数には文字列のリストが必要です。私のコードでは、関心のある変数をすでにクォーチャのリストとして定義していますので、クォーチャのリストを文字列のリストに変換することで、リストをもう一度作成しないようにします。終了と文字列を文字列のリストに分割する
私はrlang
文書の周りを狩りに行きましたが、既存の解決策は見つかりませんでした。機能のquo_expr
家族スプライスと変換quosuresを単一の文字列ではなく、彼らは文字列のリストを生成しないことができます。ここでは
library(rlang)
# this works
sepal_length <- quo(Sepal.Length)
quo_text(sepal_length)
# this doesnt
sepaldims <- quos(Species, Sepal.Length)
quo_text(sepaldims)
が、これは有用であろう例です:
library(dplyr)
# group_by accepts a list of quosures
sepaldims <- quos(Species, Sepal.Length)
iris_sepal <- iris %>%
group_by(!!!sepaldims) %>%
summarize(sepal_width = mean(Sepal.Width), petal_width = mean(Petal.Width))
petaldims <- quos(!!!sepaldims, Petal.Length)
iris_petal <- iris %>%
group_by(!!!petaldims) %>%
summarize(sepal_width = mean(Sepal.Width), petal_width = mean(Petal.Width))
# but left join expects a list of strings
iris_merge <- left_join(iris_sepal, iris_petal, by = c("Species", "Sepal.Length"))
あなたの 'quos_text'関数は' sapply(qs、quo_text) 'に簡略化できると思います。 – Marius
ありがとう@マリアス!それは私がちょうどそれをインラインで使うかもしれないほど短いです。 – Stanwood