我想为变量分配一个文本,然后在我的管道中使用该变量。我广泛使用gather
和select
。
在下面的示例中,我希望能够在管道代码中使用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
有什么想法吗?
答案 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