首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R dplyr:删除多个列

R dplyr:删除多个列
EN

Stack Overflow用户
提问于 2016-03-07 16:42:50
回答 10查看 149.5K关注 0票数 109

我有一个数据帧和该数据帧中我想要删除的列的列表。让我们以iris数据集为例。我想删除Sepal.LengthSepal.Width,只使用剩余的列。如何使用dplyr包中的selectselect_执行此操作?

这是我到目前为止尝试过的:

代码语言:javascript
复制
drop.cols <- c('Sepal.Length', 'Sepal.Width')
iris %>% select(-drop.cols)

-drop.cols中的

错误:一元运算符的参数无效

代码语言:javascript
复制
iris %>% select_(.dots = -drop.cols)

-drop.cols中的

错误:一元运算符的参数无效

代码语言:javascript
复制
iris %>% select(!drop.cols)

!drop.cols中的

错误:参数类型无效

代码语言:javascript
复制
iris %>% select_(.dots = !drop.cols)

!drop.cols中的

错误:参数类型无效

我觉得我遗漏了一些明显的东西,因为这些看起来是一个非常有用的操作,应该已经存在。在Github上,有人发布了a similar issue,哈德利说要使用“负索引”。这(我想)就是我试过的,但没有用。有什么建议吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2016-03-07 16:59:24

查看select_vars上的帮助。这给了你一些关于如何使用它的额外想法。

在您的案例中:

代码语言:javascript
复制
iris %>% select(-one_of(drop.cols))
票数 133
EN

Stack Overflow用户

发布于 2017-03-21 03:58:33

也可以试试

代码语言:javascript
复制
## Notice the lack of quotes
iris %>% select (-c(Sepal.Length, Sepal.Width))
票数 88
EN

Stack Overflow用户

发布于 2018-04-01 00:12:30

除了select(-one_of(drop.cols))之外,还有两个使用select()删除列的其他选项,这些选项不涉及定义所有特定的列名(使用dplyr starwar示例数据可以获得更多的列名):

代码语言:javascript
复制
starwars %>% 
  select(-(name:mass)) %>%        # the range of columns from 'name' to 'mass'
  select(-contains('color')) %>%  # any column name that contains 'color'
  select(-starts_with('bi')) %>%  # any column name that starts with 'bi'
  select(-ends_with('er')) %>%    # any column name that ends with 'er'
  select(-matches('^f.+s$')) %>%  # any column name matching the regex pattern
  select_if(~!is.list(.)) %>%     # not by column name but by data type
  head(2)

# A tibble: 2 x 2
homeworld species
  <chr>     <chr>  
1 Tatooine  Human  
2 Tatooine  Droid 
票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35839408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档