2016-03-03 77 views
1

使用示例数据删除列:使用grep和管道

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"

回答

6

在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")找出更多关于其他的“特殊功能”可以在里面dplyr::select使用。