【问题标题】:Writing function with dplyr's left_join使用 dplyr 的 left_join 编写函数
【发布时间】:2019-10-14 19:12:54
【问题描述】:

我正在尝试编写一个执行 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,但我不能让它工作。

【问题讨论】:

标签: r function dplyr


【解决方案1】:

找到下面的函数:

glue_sth <- function(df, variable) {

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

在这里,我基本上重命名了该列,这样我们就不必遍历整个eval(parse()) 路线。

如 cmets 中所述的替代方案:

glue_sth <- function(df, variable) {

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

让我知道它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多