如何在向量中的每个字符串中仅保留唯一的单词?即删除所有重复项

1 string text r duplicates

让我们说我的数据看起来像这样:

vector = c("Happiness with KK Happiness without KK", "I love some coding I love major coding", "fun 2 fun 3")
Run Code Online (Sandbox Code Playgroud)

我想删除所有重复的单词,包括每个重复单词的第一个实例.所以,我的输出看起来像这样:

[1] "with without"
[2] "some major"
[3] "2 3"
Run Code Online (Sandbox Code Playgroud)

基本上,它与此问题类似:如何在向量中的每个字符串中仅保留唯一的单词.但是我甚至不想保留重复单词的第一个实例.

我试图用strsplit()沿着" "duplicated()每个字符串分割成它的各种单词和然后检测是否有重复.

使用的问题duplicated()是它只返回重复单词的第二个实例的逻辑向量.此外,使用strsplit()以列表的形式给出输出,这实际上使事情变得复杂,例如,当我想获得重复单词的子集时(通常类似于df[duplicated(df)]列表上不起作用的东西).

the*_*ail 5

使用duplicated检查向前和向后趁着fromLast=TRUE:

lapply(strsplit(vector, "\\s+"), function(x) 
  x[!(duplicated(x) | duplicated(x,fromLast=TRUE))]  
)
#[[1]]
#[1] "with"    "without"
#
#[[2]]
#[1] "some"  "major"
#
#[[3]]
#[1] "2" "3"
Run Code Online (Sandbox Code Playgroud)