r - 如何仅保留向量中每个字符串中的唯一单词

标签 r string vector duplicates

我有看起来像这样的数据:

vector = c("hello I like to code hello","Coding is fun", "fun fun fun")

我想删除重复的单词(空格分隔),即输出应如下所示

vector_cleaned
[1] "hello I like to code"
[2] "coding is fun"
[3] "fun"

最佳答案

拆分它( strsplit 在空格上),使用 unique (在 lapply 中)和 paste它重新组合在一起:

vapply(lapply(strsplit(vector, " "), unique), paste, character(1L), collapse = " ")
# [1] "hello i like to code" "coding is fun"        "fun"  

## OR
vapply(strsplit(vector, " "), function(x) paste(unique(x), collapse = " "), character(1L))

根据评论更新

您始终可以编写一个自定义函数来与您的 vapply 一起使用。功能。例如,这里有一个函数,它接受一个拆分字符串,删除短于特定字符数的字符串,并具有“唯一”设置作为用户选择。
myFun <- function(x, minLen = 3, onlyUnique = TRUE) {
  a <- if (isTRUE(onlyUnique)) unique(x) else x
  paste(a[nchar(a) > minLen], collapse = " ")
}

比较以下输出,看看它是如何工作的。
vapply(strsplit(vector, " "), myFun, character(1L))
vapply(strsplit(vector, " "), myFun, character(1L), onlyUnique = FALSE)
vapply(strsplit(vector, " "), myFun, character(1L), minLen = 0)

关于r - 如何仅保留向量中每个字符串中的唯一单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033312/

相关文章:

C# 字符串比较 : Difference between CurrentCultureIgnoreCase and InvariantCultureIgnoreCase

sql - 字符串作为 PostgreSQL 列中的所有记录

iphone - 是否有一个库可以为 iPhone 进行光栅到矢量的转换?

c++ - vector 操作和存储到第三个 vector

r - 在 R 中使用 'neuralnet' 时出现意外输出

r - 如何检查矩阵或数据框中是否存在列?

r - dplyr "weighted sum"和 across()

字符串数组的 C++ vector ?

r - 在 R 的当前目录中创建嵌套文件夹?

python - 修改pygame的数组以进行blit