如果你真的想“......更加强调子字符串及其序列的精确性......”,那么这个函数可以工作,因为它测试一个字符串是否是另一个字符串的子字符串:
library(data.table)
x <- c("A&A PRECISION", "A&A PRECISION ENGINEERING", "B&B PRECISION")
y <- x
我们想扩大网格。为此,我会CJ
使用data.table
. 然后,我们将检查每一对,看看 x 是否是 y 的子串(反过来就不行了):
CJ(x, y)[, similarity := apply(.SD, 1, function(x) x[2] %like% x[1]), .SDcols = c("x", "y")][x != y, ]
x y similarity
1: A&A PRECISION A&A PRECISION ENGINEERING TRUE
2: A&A PRECISION B&B PRECISION FALSE
3: A&A PRECISION ENGINEERING A&A PRECISION FALSE
4: A&A PRECISION ENGINEERING B&B PRECISION FALSE
5: B&B PRECISION A&A PRECISION FALSE
6: B&B PRECISION A&A PRECISION ENGINEERING FALSE
请记住,您需要确保字符串尽可能整洁才能使其正常工作,即使那样它也可能会失败。
我会检查一些东西来清理你的字符串:
- 删除多个空格,
- 删除字符串开头/结尾的空格
- 确保相同的编码
- 确保相同的CASE
你可以用这个stringi
包来实现。