R语言如何实现字符串向量各元素内条目去重仅保留唯一值
R实现分号分隔字符串的单元素内去重重拼
通过R base内置函数组合即可实现需求,无需额外安装第三方包,完整可运行代码如下:
# 定义原始输入向量 vec <- c("US;DE;US", "AU;AU;JP", "IN;SA;CN;RU", "PK;IQ;IQ") # 核心处理逻辑 vec <- sapply( strsplit(vec, split = ";"), function(split_part) paste(unique(split_part), collapse = ";") )
运行后得到的vec与目标结果完全匹配:
> vec [1] "US;DE" "AU;JP" "IN;SA;CN;RU" "PK;IQ"
步骤逻辑说明
strsplit(vec, ";"):对向量内每个字符串按分号做拆分,返回和原向量等长的列表,列表内每个元素存储对应字符串拆分后的单个值- 遍历列表中每个拆分后的片段:用
unique()保留首次出现的非重复值,再通过paste(..., collapse = ";")把去重后的片段重新用分号拼接为完整字符串 sapply()会自动把遍历处理后的结果简化为字符向量,输出顺序和原向量完全对应,不会打乱条目首次出现的顺序。
内容的提问来源于stack exchange,提问作者Muhammad Kamil
相关产品推荐
相关产品推荐

