有没有办法将
%like%
包中的 datatable
运算符设置为不区分大小写?例如 'hello' %like% 'HELlo'
会匹配。
不依赖
data.table
中的定义:
`%like%` <- function (x, pattern) {
stringi::stri_detect_regex(x, pattern, case_insensitive=TRUE)
}
data.table
将其定义为:
function (vector, pattern)
{
if (is.factor(vector)) {
as.integer(vector) %in% grep(pattern, levels(vector))
}
else {
grepl(pattern, vector)
}
}
如果您愿意,您可以覆盖
factor
的情况,但这不是一个非常复杂的功能。其中没有“魔法”。
我使用
stringi
,因为它(对于我的工作)比内置字符串操作更强大,并且在后台提供了更多的功能。
您也可以将其定义为:
`%like%` <- function (x, pattern) {
grepl(pattern, x, ignore.case=TRUE)
}
(再次忽略
factor
的情况)如果你愿意的话。这样做你会失去矢量化的pattern
,但是。
如果您不想压缩
%likeic%
的 data.table
的定义,请命名为 %like%
(例如,忽略大小写)。
您可以使用
%ilike%
代替。这是在 grep
中调用
data.table
的便捷功能之一