有没有办法让包中的%like%运算符datatable不区分大小写?所以比如'hello' %like% 'HELlo'匹配.
不依赖于以下定义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%.