我正在尝试使用R包gather()
中的tidyr
函数从要收集的列中删除列。
当我指定要收集的列时(这里,我将mpg
,cyl
和disp
列收集到variable
和{ {1}}列:
val
假设我有四个变量,而不是指定要收集哪个变量,我想指定在下一个案例中删除哪个(library(tidyverse)
mtcars %>%
select_("mpg", "cyl", "disp") %>%
gather_("variable", "val", gather_cols = c("mpg", "cyl", "disp"))
)。显然,这可能不起作用:
hp
使用mtcars %>%
select_("mpg", "cyl", "disp", "hp") %>%
gather_("var", "val", gather_cols = c(-"hp"))
的建议 - 如this question的答案 - 似乎不起作用。在one_of
的现已关闭的GitHub issue中,建议使用tidyr
,但这似乎也不起作用。
怎么可能 - 使用dplyr::select_vars()
指定要使用标准评估删除哪些列?
答案 0 :(得分:0)
我对tidyverse
加载的内容及其管理环境有点不熟悉 - 我通常使用常规tidyr
- 但使用tidyr::gather
代替gather_
,允许你使用这种语法:
# here, gather takes the "key" and "value" args as objects
# as does dplyr::select
# and allows for additional objects off the data.frame
# to be passed as additional args
mtcars %>%
dplyr::select(mpg, cyl, disp, hp) %>%
tidyr::gather(var, val, -hp)
答案 1 :(得分:0)
这个怎么样?
mtcars %>%
select_("mpg", "cyl", "disp", "hp") %>%
gather_("var", "val", select_vars(include = c('mpg', 'cyl', 'disp')))
或者如果要指定排除列:
mtcars %>%
select_("mpg", "cyl", "disp", "hp") %>%
gather(var, val, select_vars(include = -matches('hp')))