r - 使用标准评估从 tidyr 包中从 Gather() 中排除列

标签 r tidyr

我试图从 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/

相关文章:

r - 创建新变量的字符位置标识

r - 根据 R dplyr 中的条件将字符转换为 NA

r - Pivot_Longer 创建多个组合列

r - 使用 API 下载数据时出现 "You must provide a hash."错误(在 R 中)

r - 在 VBA 中将字符列表作为参数传递给 RScript?

r - 如何使用 igraph 提取 R 中所有最短路径的边类型?

r - 在 tidyr/dplyr 中添加零计数行的正确习惯用法

r - 有没有办法在 r 中将 2 位数年份变成 4 位数年份

r - 如何使用ggplot在圆内随机散布点,而不会围绕中心聚集?

基于一两列 reshape 数据