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

R中如何一次性将分隔符拆分到新行且仅保留唯一值?

R语言拆分分隔列并同步去重实现方案

问题根源

原有代码失效的核心原因是:strsplit()返回值为列表结构,直接调用unique()是对整个列表对象去重,而非对列表内每个元素对应的拆分后字符向量做去重,因此无法过滤重复值。

正确实现代码

仅需通过purrr::map()遍历列表元素执行去重,即可一步完成拆分+去重操作,无需后续单独处理:

# 加载依赖包
library(tidyverse)

# 原有示例数据
df <- read.table(text= 'sample, GENE1
s1 A,B
s4 B,A,A,C,C'
, header = TRUE, stringsAsFactors = FALSE)

# 一步实现拆分+去重
df %>%
  mutate(GENE1b = map(strsplit(as.character(GENE1), ","), unique))  %>%
  unnest(GENE1b)    

运行结果

# A tibble: 5 × 3
  sample. GENE1     GENE1b
  <chr>   <chr>     <chr> 
1 s1      A,B       A     
2 s1      A,B       B     
3 s4      B,A,A,C,C B     
4 s4      B,A,A,C,C A     
5 s4      B,A,A,C,C C  

逻辑说明

map()函数会逐个处理strsplit()返回的每个列表元素,对每个样本拆分后的字符向量单独执行unique()操作,展开后自然就不会出现重复值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:36:04