Regex R中的部分字符串匹配?这可能吗?

Regex R中的部分字符串匹配?这可能吗?,regex,string,match,partial,Regex,String,Match,Partial,我不确定这是否可行。我有两个有科学名称的数据框。其中一些拼写错误,一些缺少空格,另一些是同名词(不是同一物种),还有一些匹配。所以我有这样的想法: stringDF <- data.frame(string = c("Abietinella abietina (Hedw.) M.Fleisch.", "Abietinella abietina (Hedw.) M. Fleisch.", "Abietinella abietina (Hedw

我不确定这是否可行。我有两个有科学名称的数据框。其中一些拼写错误,一些缺少空格,另一些是同名词(不是同一物种),还有一些匹配。所以我有这样的想法:

stringDF <- data.frame(string = c("Abietinella abietina (Hedw.) M.Fleisch.", "Abietinella abietina (Hedw.) M. Fleisch.", "Abietinella abietina (Hedw.) Smith", "Abitinella abietina (Hedw.) M. Fleisch."))
patternDF <- data.frame(string = "Abietinella abietina (Hedw.) M. Fleisch.", match = "A")
string                                      match
Abietinella abietina (Hedw.) M.Fleisch.     A
Abietinella abietina (Hedw.) M. Fleisch.    A
Abietinella abietina (Hedw.) Smith          NA
Abitinella abietina (Hedw.) M. Fleisch.     A
我已尝试使用此功能:

stringDF$match <- patternDF$match[pmatch(stringDF$string, patternDF$string)]

stringDF$match您可以使用
stringdist
library()来实现这一点,而无需使用regex的一些临时解决方案。正则表达式模糊匹配在某些软件包和其他语言中可用(如-参见近似“模糊”匹配)

在任何情况下,最好在你的案例中使用Levenshtein距离函数(谷歌搜索更多信息-有不错的信息)

运行上述代码会产生以下结果:

1 0 9 1

这些分别是4个字符串中每个字符串的Levenshtein距离。您可以将结果与一些编码逻辑一起使用,以仅接受Levenshtein值足够低的结果。基于您当前的字符串,我可能建议只保留值为
的字符串,这太棒了!我使用了一个嵌套的for循环,使用stringdist()函数来获得所需的输出。非常感谢你!
1 0 9 1