dplyr 使用函数参数作为 by.x 和 by.y 在函数中加入数据框

dplyr join data frame in side a function using function arguments as by.x and by.y

我想在函数内部执行 left_join,使用函数参数告诉代码应该是 'by.x' 和 'by.y'。在下面的示例中,我想使用函数 'aa' 的 'a2' 和 'a3' 参数 - 代替 'by' 中的 "x1" 和 "a"范围。我很困惑如何在这里使用 rlang 包的好处

aa <- function(a1,a2,a3){
  a1 %>% left_join(a1, by=c("x1"="a"))
}
xx<-data.frame(a=c(1:2), x1=c(2:3))
aa(xx,"x1","a")

如果我正确理解你的问题并且你的目标是能够将你要加入的列的名称传递给函数,则以下应该有效:

aa <- function(a1,a2,a3){
  a1 %>% left_join(a1, by=setNames(a3, a2))
}

xx<-data.frame(a=c(1:2), x1=c(2:3))
aa(xx,"x1","a")

使用 c(a2=a3) 指定列在这种情况下不起作用,我将其替换为 setNames(a3, a2)