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

嵌套tibble执行unnest操作前如何删除重复列名的列?

实现方案

你可以用以下代码实现drop_duplicated_cols函数,完全适配你要求的管道调用逻辑:

library(tidyverse)

drop_duplicated_cols <- function(df, nest_col) {
  nest_col <- enquo(nest_col)
  outer_colnames <- colnames(df)
  df %>%
    mutate(!!nest_col := map(!!nest_col, ~ select(.x, -any_of(outer_colnames))))
}

调用测试

用你提供的测试数据验证:

# 构造测试数据
df <- tibble(id = 1:2, data = list(tibble(id = 1, var1 = "a", var2 = "b"), tibble(id = 2, var1 = "c", var2 = "d")))

# 按预期方式调用
df %>% 
  drop_duplicated_cols(data) %>% 
  unnest(data)

输出结果

# A tibble: 2 × 3
     id var1  var2 
  <int> <chr> <chr>
1     1 a     b    
2     2 c     d    

逻辑说明

  • 用enquo()处理传入的嵌套列名,适配tidyverse的非标准评估规则,支持直接传入列名无需加引号
  • 先提取外层tibble的所有列名,遍历嵌套列中的每个子tibble时,删除所有和外层重名的列
  • any_of()做安全校验,避免子tibble无对应重名列时抛出错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:04