有没有办法让%like%
包中的datatable
运算符不区分大小写?因此,例如'hello' %like% 'HELlo'
将匹配。
答案 0 :(得分:8)
不依赖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%
的{{1}}的定义,请设置名称data.table
(例如,忽略大小写)。