stringr
软件包中的几乎所有帮助文件都包含此行
使用fixed()匹配固定字符串(即仅比较字节)。 这是快速的,但是是近似的。通常,为了匹配人类文字, 您需要coll()遵守字符匹配规则 指定的语言环境。
基本的R包不包含coll()的选项,它们仅包含fixed()的选项。但是基本软件包也有useBytes,该函数在函数中设置为FALSE,例如grepl
。
fixed()与fixed = TRUE, useBytes = TRUE
是同一事物,而coll()与fixed = TRUE, useBytes = FALSE
是同一事物吗?我是Stringr的新手,我正在尝试寻找等效的东西。
答案 0 :(得分:1)
trainable
用于“归类搜索”。这是coll()
vignette("stringr")
使用人工语言归类规则查找与x的匹配项,如果您要进行不区分大小写的匹配,则这一点尤其重要。排序规则在世界各地都不同,因此您还需要提供一个语言环境参数。
coll(x)
i <- c("I", "İ", "i", "ı")
i
#> [1] "I" "İ" "i" "ı"
str_subset(i, coll("i", ignore_case = TRUE))
#> [1] "I" "i"
str_subset(i, coll("i", ignore_case = TRUE, locale = "tr"))
#> [1] "İ" "i"
的缺点是速度。因为识别哪些字符相同的规则很复杂,所以与coll()
和coll()
相比,regex()
相对较慢。请注意,当fixed()
和fixed()
都具有regex()
时,它们执行的比较要比ignore_case arguments
因此,coll()
基本上使用给定语言环境中的信息来了解什么字符基本上是相同的,即使它们在技术上是不同的字符,也允许它们彼此匹配。