Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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中agrep函数正则表达式逻辑中的错误?_R_Regex_Fuzzy Search_Agrep - Fatal编程技术网

如何绕过R中agrep函数正则表达式逻辑中的错误?

如何绕过R中agrep函数正则表达式逻辑中的错误?,r,regex,fuzzy-search,agrep,R,Regex,Fuzzy Search,Agrep,因此,我在R中遇到了一个小错误/特性,其中agrep函数在参数中使用时不接受“|”字符作为有效的正则表达式逻辑() 我试图在一个字符向量(ListofUniqueNames)中对30个不同的、相对唯一的名称与数据帧列(MasterList$names)中超过380000个不同名称的列表进行模糊匹配,并获得所有匹配名称的输出。我能够通过使用grep via完成精确匹配的这一精细操作 grep(paste(ListofUniqueNames,collapse="|"),MasterList$Name

因此,我在R中遇到了一个小错误/特性,其中agrep函数在参数中使用时不接受“|”字符作为有效的正则表达式逻辑()

我试图在一个字符向量(ListofUniqueNames)中对30个不同的、相对唯一的名称与数据帧列(MasterList$names)中超过380000个不同名称的列表进行模糊匹配,并获得所有匹配名称的输出。我能够通过使用grep via完成精确匹配的这一精细操作

grep(paste(ListofUniqueNames,collapse="|"),MasterList$Names, value=TRUE, ignore.case = TRUE)

但是,由于上面列出的问题,这种方法不适用于agrep。如何通过模糊匹配完成相同的任务

您可以为每个模式逐个调用
agrep
, 然后结合结果:

unlist(lapply(ListofUniqueNames, function(x) agrep(x, MasterList$Names, value=T, ignore.case = TRUE)))

上面的
grep
语句实际上是有效的。您是否打算使用
agrep
而不是
grep
该语句是一个用于精确匹配的grep函数示例。但是
agrep(粘贴(ListofUniqueNames,collapse=“|”)主列表$Names,value=TRUE,ignore.case=TRUE,fixed=FALSE)
不起作用。
agrep(“(asdf | fdsa)”,“asdf”,fixed=F)
有趣的东西:
agrep(“asdf”,“asdf | fdsa)”)
然后
agrep((asdf | fdsa)”,“asdf”,max.distance=.55)