Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找与R匹配的最佳字符串_R_String_String Matching_Fuzzy Search - Fatal编程技术网

查找与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)