按正则表达式

时间:2018-04-15 02:57:16

标签: r regex dplyr

我想选择以下列四种方式之一开始的所有列:CB,LB,LW,CW但不包含任何具有字符串" con。"

的列

我目前的做法是:

tester <- df_ans[,names(df_ans) %in% colnames(df_ans)[grepl("^(LW|LB|CW|CB)[A-Z_0-9]*",colnames(df_ans))]]
tester <- tester[,names(tester) %in% colnames(tester)[!grepl("con",colnames(tester))]]

在像dplyr这样的库中有更好/更有效的方法吗?

2 个答案:

答案 0 :(得分:3)

试试这个:

nms <- names(df_ans)
df_ans[ grepl("^(LW|LB|CW|CB)", nms) & !grepl("con", nms) ]

答案 1 :(得分:2)

我们可以使用com.google.firebase.database.DatabaseException

matches

数据

library(dplyr)
df %>%
   select(matches("^(CB|LB|LW|CW)"), -matches("con"))
#   CB1 LB2 CW3 LW20
#1   3   9   6    1
#2   3   3   4    5
#3   7   7   7    7
#4   5   8   7    2
#5   6   3   3    3