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