在函数中使用dplyr :: select从多个数据帧中选择一个固定的列

时间:2019-03-21 23:36:22

标签: r dplyr tidyeval

我正在尝试定义一个函数,该函数使用dplyr::select选择在多个数据框中具有相同名称的列,因此该列的名称不应作为对用户的相关输入。例如,我希望这样的事情适用于其中包含“ Sepal.Length”列的任何数据框:

sel_Sepal.Length <- function(df) {
        # The code we are looking for...
}

以便我可以应用

sel_Sepal.Length(iris)

要获得这样的结果:

    Sepal.Length
1            5.1
2            4.9
3            4.7
4            4.6
5            5.5
...          ...

我知道这个answer存在类似问题。但不同之处在于,我希望该函数在不输入列名的情况下运行,该列名应在函数代码中固定。

这可能被认为是一个琐碎的问题,因为可以使用户输入列名并使之起作用:

selectvar <- function(df, var) {
        var <- enquo(var)
        df %>%
                select(!!var)
}

selectvar(iris, Sepal.Length)

    Sepal.Length
1            5.1
2            4.9
3            4.7
4            4.6
5            5.5
...          ...

但是我认为我缺少一个概念,因此我无法使其按我要求的方式工作(无需输入要选择的列)。提出这个问题只是为了找到缺失的概念。希望它可以帮助别人。预先谢谢你!

1 个答案:

答案 0 :(得分:0)

我可能误解了你的问题;因为您明确希望将列名硬编码在函数内部(至少这是我从推论得出的,“我希望函数在不输入列名的情况下工作,该名称应固定在函数代码内” ),您可以

sel_Sepal.Length <- function(df) {
    df %>% select(Sepal.Length)
}

但这意味着实际上整个功能没有太多意义。

也许您可以阐明整个练习的重点?