获取字符串向量元素之间的最小共享部分

4

将一组字符串列表转换为矢量列表:

xx <- c("concord wanderer basic set air snug beige",
  "concord wanderer basic set air snug black noir", 
  "concord wanderer basic set air snug blue bleu", 
  "concord wanderer basic set air snug brown marron", 
  "concord wanderer basic set air snug green vert", 
   "concord wanderer basic set air snug grey gris", 
   "concord wanderer basic set air snug red rouge", 
   "concord wanderer basic set air snug rose" )

我试图获取向量元素之间的最小共享部分,例如,这里我应该得到:

"concord wanderer basic set air snug"

xx是前一个过程的结果,因此我确信元素之间存在共享部分。但是删除的部分并不总是在字符串的末尾。

使用strsplit`table,我得到了这个部分解决方案,但它有点棘手,而且我失去了原始单词的顺序:

table_x <- table(unlist(strsplit(xx,' ')))
paste(names(table_x[table_x==max(table_x)]),collapse=' ')
[1] "air basic concord set snug wanderer"

我相信有更好的解决方案。我尝试使用agrepadist,但效果不是很好。

1个回答

7
你可以使用reduceintersect来获得你想要的输出。
paste(Reduce(intersect, strsplit(xx, " ")), collapse=" ")
#[1] "concord wanderer basic set air snug"

喜欢你的解决方案。非常优雅。 - ivan-k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接