如何使%like%运算符不区分大小写

Chi*_*Abs 6 r data.table

有没有办法让包中的%like%运算符datatable不区分大小写?所以比如'hello' %like% 'HELlo'匹配.

hrb*_*str 8

不依赖于以下定义data.table:

`%like%` <- function (x, pattern) { 
  stringi::stri_detect_regex(x, pattern, case_insensitive=TRUE)
}
Run Code Online (Sandbox Code Playgroud)

data.table 将其定义为:

function (vector, pattern) 
{
    if (is.factor(vector)) {
        as.integer(vector) %in% grep(pattern, levels(vector))
    }
    else {
        grepl(pattern, vector)
    }
}
Run Code Online (Sandbox Code Playgroud)

factor如果你愿意,你可以覆盖这个案例,但这不是一个非常复杂的功能.没有"魔力".

我使用stringi(因为我的工作)远比内置的字符串操作更强大,并提供了更多的功率.

您还可以将其定义为:

`%like%` <- function (x, pattern) { 
  grepl(pattern, x, ignore.case=TRUE)
}
Run Code Online (Sandbox Code Playgroud)

(factor如果你愿意的话,再一次忽略这个案子).你失去了矢量化,pattern这样做.

%likeic%如果你不想压缩data.table's 的定义,请设置名称(例如,忽略大小写)%like%.