首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归地匹配和替换字符串到向量元素,使用agrep()

递归地匹配和替换字符串到向量元素,使用agrep()
EN

Stack Overflow用户
提问于 2017-10-05 07:05:07
回答 1查看 133关注 0票数 1

我有两个向量,它们是由regex应用于特定模式的各种应用产生的:

代码语言:javascript
复制
> v1 <- c('abc', 'efg', 'hijk', 'mno')
> v2 <- c('abcde', 'ijklm')

我想将v2中的字符串与使用agrep()的v1匹配,

代码语言:javascript
复制
> agrep(v2[1], v1, max.distance = 2)
[1] 1

> agrep(v2[2], v1, max.distance = 2)
[1] 3

因此,v1中最接近v2的元素可以替换为v2,从而给出以下向量:

代码语言:javascript
复制
> rslt <- c('abcde', 'efg', 'ijklm', 'mno')
[1] "abcde" "efg"   "ijklm" "mno" 

我可能需要一个函数来改变max.distance数,以便找到最接近的匹配项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-05 07:27:55

你可以这样做:

代码语言:javascript
复制
sapply(v1, function(x) {ifelse(length(agrep(x, v2)) > 0, agrep(x, v2, value = TRUE), x)})

返回:

代码语言:javascript
复制
    abc     efg    hijk     mno 
"abcde"   "efg" "ijklm"   "mno"

注意,如果输入同时包含'abc‘和'abcd',两者都将被替换为’abc be‘。我想这就是你想要的行为?希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46579773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档