我正在尝试编写一个自定义函数,该函数将使用 quosures 作为 left_join() 函数的“by = c()”部分中的参数来连接两个数据集。
这是我当前对该函数的尝试,在“by = c(!!left_index = !!right_index))”部分失败。 left_join 期望这些参数被引用,并且引用 quosures 会使 !! 无效。
join_by_quosure <- function(data, left_index, var_to_impute, right_index){
require(dplyr)
left_index <- enquo(left_index)
right_index <- enquo(right_index)
var_to_impute <- enquo(var_to_impute)
left_join(data,
data %>% select(!!right_index, !!var_to_impute),
by = c(!!left_index = !!right_index))
}
我在下面编写了这个工作示例来说明该函数如何工作:
# join_by_quosure(data = mtcars, left_index = vs, var_to_impute = mpg, right_index = am)
left_join(mtcars,
mtcars %>% select(am, mpg),
by = c("vs" = "am"))
如果有人能够提供有关如何在 left_join() 函数的“by = c()”部分中调用 quosure 的见解,我将非常感激。