【问题标题】:Compare 2 two strings and complement the terms in R比较 2 两个字符串并补充 R 中的术语
【发布时间】:2018-02-02 17:25:48
【问题描述】:

所以我一直在努力寻找解决这个问题的方法。我有 2 个字符串。例如:

喝酸奶有益健康

如果你不超过,喝Yog是好的

所以我想要的是补充不完整的单词并包括不在两个字符串中的单词。条款的顺序和案例都不重要。所以我的结果可能是:

饮用酸奶不超过对健康有益

我只是想补充字符串。任何的想法?谢谢你。

【问题讨论】:

  • 没关系,这些 Drinkable Yoghurt 。但是这个your 打破了常规,因为输出包括youryou
  • @sln 错过了。我编辑了这个例子。谢谢你 。案例也不是。

标签: r regex string text compare


【解决方案1】:
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"

【讨论】:

  • 太棒了!像奇迹一样工作。非常感谢!。我不太擅长混合正则表达式和应用。谢谢你。就一个问题,Yog and Drink怎么了??? O.o
  • 我喝了Yog,因为如果我不超过它对我的健康有好处。哈哈,实际上,运行我写的sapply(.......) 代码。然后运行apply(sapply(.......))。然后在apply前面加上!。然后将其全部放入foo_vec[!apply(sapply(.......))],您将能够看到发生了什么。
  • 哈哈哈,哦,检查了,现在我明白了。谢谢!我要买酸奶!哈哈
  • 现在我是古玩。有没有办法保持外观的顺序?哦,我看到了。 XD嘿嘿
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
相关资源
最近更新 更多