You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言strsplit拆分后调用unique未正确去重单词的问题解决

问题根因

R中strsplit()函数的返回值是列表结构,哪怕只传入1个待拆分字符串,返回结果也是长度为1的列表,列表的第一个元素才是拆分完成的单词向量。
原代码直接用c()包裹strsplit()的返回结果,本质拿到的还是那个长度为1的列表,此时调用unique()只会判断列表层级的元素是否重复——整个单词向量作为列表的单个元素,自然不会被判定为重复,根本不会触发向量内部的单词去重逻辑,所以返回结果和拆分后的原始内容完全一致,没有去重效果。

修正方案

只需要把strsplit()返回的列表转换为普通字符向量,再执行去重即可。推荐用unlist()处理列表,兼容单字符串、多字符串向量的输入场景:

a = "an apple is an apple"
word <- function(a){
  # unlist将列表拍平为字符向量,支持多个输入字符串的拆分去重
  words <- unlist(strsplit(a, split = " "))
  return(unique(words))
}

# 执行函数
word(a)

运行上述代码会直接返回去重后的字符向量:

[1] "an"    "apple" "is"   

如果需要得到预期中单引号包裹、逗号分隔的输出格式,可以额外加一步字符串拼接:

paste0("'", word(a), "'", collapse = ",")

运行后输出结果为:

[1] "'an','apple','is'"

内容的提问来源于stack exchange,提问作者muralee_xo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 04:01:18