如何使用“聚集”和“选择”的变量

时间:2018-04-09 06:58:59

标签: r tidyverse

我想为变量分配一个文本,然后在我的管道中使用该变量。我广泛使用gatherselect

在下面的示例中,我希望能够在管道代码中使用x

library(tidyverse)

mtcars %>% head

mtcars %>% 
  gather(type, value, mpg:am) %>% head

mtcars %>% select(mpg:am) %>% head

这是我想要使用的变量

x <- "mpg:am"

我所尝试过的一切都没有用过

mtcars %>% 
  gather(type, value, get(x)) %>% head


mtcars %>% 
  gather(type, value, !!rlang::sym(x)) %>% head


mtcars %>% select(x) %>% head
mtcars %>% select(!!rlang::sym(x)) %>% head

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我们可以quote/quo然后使用!!

进行评估
x <- quo(mpg:am)
out1 <- mtcars %>%
            gather(type, value, !! x)

检查输出
out2 <- mtcars %>%
           gather(type, value, mpg:am)
identical(out1, out2)
#[1] TRUE