用dplyr的left_join编写函数

时间:2019-10-14 19:12:54

标签: r function dplyr

我正在尝试编写一个执行left_join的函数(glue_sth),但是您可以指定要加入的变量,如下所示:

df <- tibble(x = letters[1:10])

df_aux <- tibble(z = letters[1:10], y = 1:10)

glue_sth <- function(df, variable) {

  df %>% 
    left_join(df_aux, by = c(variable = "z"))
}

在这种情况下,变量应为x,但我无法使其正常工作。

1 个答案:

答案 0 :(得分:3)

找到以下功能:

glue_sth <- function(df, variable) {

  df %>% 
    dplyr::rename('join'=variable) %>% 
    dplyr::left_join(df_aux, by = c('join' = "z"))
}

在这里,我实质上已经重命名了该列,以便我们不必遍历整个eval(parse())路线。

注释中所述的替代方法:

glue_sth <- function(df, variable) {

  df %>% 
    dplyr::left_join(df_aux, by = setNames("z",variable))
}

让我知道它是否有效。