我试图从 gather()
中排除一列来自使用标准评估的 tidyr 包。
使用非标准评估,这可以正常工作:
mtcars_df <- head(mtcars[, c("mpg", "hp", "cyl")])
tidyr::gather(mtcars_df, key, val, -cyl)
但是,使用标准评估,以下任何一项都不起作用并且都返回错误:
tidyr::gather_(mtcars_df, "key", "val", -"cyl")
tidyr::gather_(mtcars_df, "key", "val", -cyl)
作为一种解决方法,我尝试使用
select()
辅助函数 contains()
,但这只是返回了原始 data.frame
, mtcars_df
:tidyr::gather_(mtcars_df, "key", "val", -dplyr::contains("cyl"))
如何使用标准评估以这种方式排除列?这里发生了什么?
最佳答案
根据 tidyr github 问题 #109: gather_ no longer supports dropping a column? ,
gather_() only works with character vectors. - Hadley Wickham, 2015
你可以试试
library(dplyr)
mtcars_df %>% tidyr::gather_("key", "val", setdiff(names(.), "cyl"))
关于r - 使用标准评估从 tidyr 包中从 Gather() 中排除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285006/