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

如何在R语言数据框的字符串列中批量去除每行重复名称?

解决R语言data.frame列内逗号分隔字符串去重问题

针对你的需求,这里提供几种简洁高效的方法,将单行处理逻辑推广到整个my.text列:

方法1:基础R(无需额外包)

用sapply循环处理每个字符串元素,完成拆分、去重、合并的流程:

df$my.text <- sapply(df$my.text, function(x) {
  # 拆分字符串为向量,去重后重新合并
  paste(unique(strsplit(x, split = ", ")[[1]]), collapse = ", ")
})

方法2:tidyverse风格(purrr包)

如果习惯tidyverse的语法,用purrr::map_chr可以更简洁地实现:

library(purrr)

df$my.text <- map_chr(df$my.text, ~ paste(unique(strsplit(.x, ", ")[[1]]), collapse = ", "))

方法3:dplyr管道式处理

结合dplyr的管道操作,代码可读性更强:

library(dplyr)
library(purrr)

df <- df %>%
  mutate(my.text = map_chr(my.text, ~ paste(unique(strsplit(.x, ", ")[[1]]), collapse = ", ")))

验证结果

运行上述任意一种方法后,df的输出将符合预期:

df
#>                      my.text
#> 1 John Smith, Johnny Smith
#> 2    John Doe, Doe, Johnny
#> 3                 Jane Doe

另外,你提到的mapply其实也能实现,只是需要调整参数写法:

df$my.text <- mapply(function(x) paste(unique(strsplit(x, ", ")[[1]]), collapse = ", "), df$my.text)

sapply本质是mapply的简化版,单输入场景下用sapply更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:03:38