grep名称使用数据表中的正则表达式

apr*_*ian 2 regex r data.table

我如何使用正则表达式模式从R数据表中复制列。

我需要提取具有字符串“ nbr [0-9] _” *的列,例如示例nbr1_L或nbr6_L

   names<- c("nbr4","nbr4_L",   "nbr5"  ,"nbr6_L",  "nbr7_L"    ,"nbr4_L"   ,"nbr4_L")
    dt<- data.table(cbind("aa","bb","cc","dd","ff","gg","hh"))
    setnames(dt,names)
Run Code Online (Sandbox Code Playgroud)

我在下面尝试

dt[, .SD, .SDcols =  names(dt) %like% "nbr*_*"]

grep('^nbr\\d+\\_\\*$', names(dt), value=TRUE)
Run Code Online (Sandbox Code Playgroud)

mt1*_*022 5

这是一种处理方法%like%

> idx <- names(dt) %like% '^nbr\\d+_.*'
> dt[, ..idx]
   nbr4_L nbr6_L nbr7_L nbr4_L nbr4_L
1:     bb     dd     ff     gg     hh
Run Code Online (Sandbox Code Playgroud)