代码之家  ›  专栏  ›  技术社区  ›  TKW

比较两个字符串并对R中的术语进行补足

  •  2
  • TKW  · 技术社区  · 7 年前

    所以我一直在试图找到解决这个问题的方法。我有两条线。例如:

    饮用酸奶对你的健康有好处

    如果你不超过

    所以我想要的是对不完整的单词进行补足,并包含不在两个字符串中的单词。条款的顺序和案例都不重要。因此,我的结果可能是:

    饮用酸奶如果不超过

    我只想补充字符串。有什么想法吗?非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   ngm    7 年前
    foo <- "Drinkable Yoghurt Is Good for your health"
    bar <- "Drink Yog is good if you do not exceed"
    
    foo_vec <- unlist(strsplit(foo, " "))
    bar_vec <- unlist(strsplit(bar, " "))
    

    在中查找单词 foo 不包含在 bar ,反之亦然,忽略大小写。

    foo_vec2 <- foo_vec[!apply(sapply(foo_vec, function(x) grepl(x, bar_vec, ignore.case = TRUE)), 2, any)]
    bar_vec2 <- bar_vec[!apply(sapply(bar_vec, function(x) grepl(x, foo_vec, ignore.case = TRUE)), 2, any)]
    

    在这两个单词中查找单词,忽略大小写。

    both <- intersect(tolower(foo_vec), tolower(bar_vec))
    

    把一切都放在一起。

    paste(c(both, foo_vec2, bar_vec2), collapse=" ")
    #> [1] "is good Drinkable Yoghurt for your health if do not exceed"