2016-03-03 60 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使用。