【问题标题】:Why should I use `all_of` to select columns?为什么我应该使用 `all_of` 来选择列?
【发布时间】:2020-10-05 09:34:30
【问题描述】:

我目前正在使用 R,并在 tidyverse 中遇到了函数 all_of。这个函数的存在是为了什么?似乎我可以在每个可以使用all_of(x) 的地方只使用x..

示例:

图书馆(tidyverse)

tb <- tibble(a=1:3, b=1:3, c=1:3)
x <- c("a", "b")

tb %>% select(all_of(x))
tb %>% select(x)

tb %>$ select(-all_of(x))
tb %>% select(-x)

带有all_of 的两行与没有额外函数的行产生相同的返回值。我为什么要费心使用它们?

【问题讨论】:

    标签: r dataframe tidyverse tibble


    【解决方案1】:

    这是一个非常好的问题!

    这是为了在选择列时明确您真正想要的内容。想象一下这种简单的情况:

    library(tidyverse)
    
    tb <- tibble(x = 1:3, y = 1:3, z = 1:3)
    x <- c("x", "y")
    
    tb %>% select(x)
    

    你看到了吗?目前尚不清楚您是否希望在此处将x 作为外部向量并因此选择两列(xy),或者您是否只想选择一列x

    这就是为什么你应该使用all_of(),它表示你想从外部向量中选择列名。

    更多信息可以在tidyselect docs找到。

    【讨论】:

    • 所以all_of 很有用,当我想选择存储在名称也是列的变量中的列时。我应该始终使用它作为良好的标准吗?
    • 没错!当提到外部向量时,是的,您可能应该将其用作一个好的标准。我认为 not using 它会向控制台打印一条警告消息。
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多