使用示例数据:
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"
答案 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