用Grep和Piping删除列

时间:2016-03-03 21:12:51

标签: r

使用示例数据:

d1<-data.frame(years=c("1","5","10"),group.x=c(1:3),group.b=c(1:3),group.2x=c(1:3))

我使用以下内容删除了列:

d2<-d1[,-grep("\\.x$",colnames(d1))]

是否有类似的方法来完成相同的使用管道呢?

d2<- d1 %>%
        filter(!grep("\\.x$",colnames()))

返回:Error: argument "x" is missing, with no default

目标是删除以".x"

结尾的列

2 个答案:

答案 0 :(得分:7)

在dplyr中,filter将删除行,select用于删除/选择您想要的列。您可以坚持使用grep,但dplyr还提供了一些专门的功能,例如ends_with

library(dplyr)
d1 %>% 
  select(-ends_with(".x"))
#  years group.b group.2x
#1     1       1        1
#2     5       2        2
#3    10       3        3

查看help("select")以了解有关其他&#34;特殊功能的更多信息&#34;你可以在dplyr::select内使用。

答案 1 :(得分:0)

只需将d1留在选择中,如下所示:

d1 %>%
   select(-grep("\\.x$",colnames(d1)))

结果:

years  group.b group.2x
 1       1        1
 5       2        2
10       3        3