拆分(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))
基于 cmets 更新
您始终可以编写一个自定义函数来与您的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)