我有两个向量,它们是由regex应用于特定模式的各种应用产生的:
> v1 <- c('abc', 'efg', 'hijk', 'mno')
> v2 <- c('abcde', 'ijklm')我想将v2中的字符串与使用agrep()的v1匹配,
> agrep(v2[1], v1, max.distance = 2)
[1] 1
> agrep(v2[2], v1, max.distance = 2)
[1] 3因此,v1中最接近v2的元素可以替换为v2,从而给出以下向量:
> rslt <- c('abcde', 'efg', 'ijklm', 'mno')
[1] "abcde" "efg" "ijklm" "mno" 我可能需要一个函数来改变max.distance数,以便找到最接近的匹配项。
发布于 2017-10-05 07:27:55
你可以这样做:
sapply(v1, function(x) {ifelse(length(agrep(x, v2)) > 0, agrep(x, v2, value = TRUE), x)})返回:
abc efg hijk mno
"abcde" "efg" "ijklm" "mno"注意,如果输入同时包含'abc‘和'abcd',两者都将被替换为’abc be‘。我想这就是你想要的行为?希望这能有所帮助!
https://stackoverflow.com/questions/46579773
复制相似问题