Dan*_*ian 7 regex grep r data.table
是否有任何已经存在的便利函数可以过滤data.table给定搜索模式中的行,查看所有列?
names(DT)
[1] "Name" "LongName" "SomeOtherCol" "NumericCol" "bar" "foo"
Run Code Online (Sandbox Code Playgroud)
像这样的东西,适用于任意数量的列:
DT[Name %like% pattern | LongName %like% pattern | SomeOtherCol %like% pattern | bar %like% pattern | foo %like% pattern]
Run Code Online (Sandbox Code Playgroud)
一种方法是循环遍历列,应用正则表达式,这将返回逻辑data.table返回.您可以使用它rowSums来获取行.
dt <- data.table(a=c("Aa1","bb","1c"),b=c("A1","a1","1C"), c=letters[1:3])
# "a1" is the pattern to search for
ldt <- dt[, lapply(.SD, function(x) grepl("a1", x, perl=TRUE))]
dt[rowSums(ldt)>0]
# a b c
# 1: Aa1 A1 a
# 2: bb a1 b
Run Code Online (Sandbox Code Playgroud)