查找与R匹配的最佳字符串
从这个查找与R匹配的最佳字符串,r,string,string-matching,fuzzy-search,R,String,String Matching,Fuzzy Search,从这个L Hernandez开始 从包含以下内容的向量: [1] "HernandezOlaf " "HernandezLuciano " "HernandezAdrian " 我试过这个: 'subset(ABC, str_detect(ABC, "L Hernandez") == TRUE)' 包括大写字母L anyplace的名称Hernandez是期望的输出 所需的输出是HernandezLuciano,这有助于: vec1 <- c("L Hernandez", "He
L Hernandez开始
从包含以下内容的向量:
[1] "HernandezOlaf " "HernandezLuciano " "HernandezAdrian "
我试过这个:
'subset(ABC, str_detect(ABC, "L Hernandez") == TRUE)'
包括大写字母L anyplace的名称Hernandez是期望的输出
所需的输出是HernandezLuciano
,这有助于:
vec1 <- c("L Hernandez", "HernandezOlaf ","HernandezLuciano ", "HernandezAdrian ")
grep("L ?Hernandez|Hernandez ?L",vec1,value=T)
#[1] "L Hernandez" "HernandezLuciano "
您可以使用
agrep
函数进行近似字符串匹配。
如果您只是运行此函数,它将匹配每个字符串
agrep("L Hernandez", c("HernandezOlaf ", "HernandezLuciano ", "HernandezAdrian "))
[1] 1 2 3
但是如果你修改一下“L Hernandez”->“Hernandez L”
并更改最大距离
agrep("Hernandez L", c("HernandezOlaf ", "HernandezLuciano ", "HernandezAdrian "),0.01)
[1] 2
你得到了正确的答案。这只是一个想法,它可能对你有用:)如果你只想在大写字母L后加上全名,你可以修改以下内容:
vec1[grepl("Hernandez", vec1) & grepl("L\\.*", vec1)]
[1] "L Hernandez" "HernandezLuciano
或
表达式在“Hernandez”上查找匹配项,然后查看是否有大写字母“L”后跟任何字符或空格。第二个版本要求大写字母“L”后加一个字母
顺便说一句,你似乎无法链接grepls
vec1[grepl("Hernandez", vec1) & grepl("L\\[[:alpha:]]", vec1)]
character(0)
它是有效的,但我从这个开始。vec1
agrep("Hernandez L", c("HernandezOlaf ", "HernandezLuciano ", "HernandezAdrian "),0.01)
[1] 2
vec1[grepl("Hernandez", vec1) & grepl("L\\.*", vec1)]
[1] "L Hernandez" "HernandezLuciano
vec1[grepl("Hernandez", vec1) & grepl("L[[:alpha:]]", vec1)]
[1] "HernandezLuciano "
vec1[grepl("Hernandez", vec1) & grepl("L\\[[:alpha:]]", vec1)]
character(0)