简体   繁体   English

如何在 grep 的基础上 select 几列?

[英]how to select several columns based on grep?

Given a data frame data给定一个数据框data

     data <- data.frame(col1 = 1:5,                      # 
      Create example data
               famg = letters[1:5],
               xxm = letters[5:1],
               x2 = 5:1)
              data

I want to keep the columns that containe我想保留包含的列

     tokeep=c("col","xm","fa") 

I used我用了

   data[grep(tokeep, names(data))] 

please note that tokeep is long than this example so i do not want to just use "col"|"xm"|"fa" but rather tokeep请注意 tokeep 比这个例子长,所以我不想只使用 "col"|"xm"|"fa" 而是使用 tokeep

I guess you can try我想你可以试试

data[grep(paste0(tokeep,collapse = "|"),names(data))]

Does this work:这是否有效:

data[grep(paste(tokeep, collapse = '|'), colnames(data))]
  col1 famg xxm
1    1    a   e
2    2    b   d
3    3    c   c
4    4    d   b
5    5    e   a

alternative way with dplyr package dplyr package 的替代方式

data %>% select(contains(tokeep))
  col1 xxm famg
1    1   e    a
2    2   d    b
3    3   c    c
4    4   b    d
5    5   a    e

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM