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

如何结合mutate()、lapply()与duplicated()识别分组列表重复字符

识别分组列表中的重复字符解决方案

你遇到的FUN缺失错误,通常是因为在mutate()中使用lapply()时没有正确定义并传递处理函数,或者参数格式不对。针对4万行的数据集,以下是几种高效可行的实现方法:

方法1:Tidyverse 风格(推荐)

使用purrr::map()替代lapply(),它和dplyr的兼容性更好,语法更简洁,处理大规模数据效率稳定:

library(dplyr)
library(purrr)

# 生成包含所有重复实例的列表列
df <- df %>%
  mutate(duplicated_codes = map(present_codes, ~ .x[duplicated(.x)]))

# 如果需要去重后的重复字符(每个重复值仅保留一次)
df <- df %>%
  mutate(duplicated_codes = map(present_codes, ~ unique(.x[duplicated(.x)])))

方法2:修正 Base R 写法

若坚持用Base R,需明确给lapply()传递处理函数,不能省略FUN参数:

library(dplyr)

df <- df %>%
  mutate(duplicated_codes = lapply(present_codes, function(x) x[duplicated(x)]))

# 同样可加入unique()去重重复值
df <- df %>%
  mutate(duplicated_codes = lapply(present_codes, function(x) unique(x[duplicated(x)])))

大规模数据效率优化

针对4万行的数据集,若present_codes内的列表元素数量较多,可改用data.table进一步提升速度:

library(data.table)

setDT(df)
df[, duplicated_codes := lapply(present_codes, function(x) unique(x[duplicated(x)]))]

说明

  • x[duplicated(x)]会提取列表中从第二次出现开始的重复字符(比如列表c("A","A","B")会返回"A")
  • 加上unique()后,会得到每组中所有重复过的唯一字符(比如列表c("A","A","A"),前者返回c("A","A"),后者返回"A",可按需选择)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:52:20