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

使用tidyr::unnest_wider()时如何基于字符向量为新列自定义命名

可以直接通过unnest_wider()的names_repair参数实现,无需提前遍历嵌套列表命名,在大数据集下性能远高于预先命名的方案。


方案1:适配当前场景的最简写法

直接在names_repair中传入最终的列名向量即可,仅需一次全局命名操作,无额外遍历开销:

library(tidyr)

my_tbl %>%
  unnest_wider(
    col = col_y,
    names_repair = ~ c("col_x", animal_names)
  )

运行后输出完全符合预期,无任何命名警告:

# A tibble: 3 × 4
  col_x   dog   cat zebra
  <chr> <dbl> <dbl> <dbl>
1 a         1     2     3
2 b         4     5     6
3 c         7     8     9

方案2:多原始列的通用适配写法

如果你的原始表除了col_x还有其他固定列,不想手动罗列原始列名,可以用前缀匹配批量修改新列名:

my_tbl %>%
  unnest_wider(col_y, names_sep = "_", names_repair = "minimal") %>%
  rename_with(~ animal_names, starts_with("col_y_"))

names_repair = "minimal"会抑制默认命名的警告,后续仅对col_y拆分出的新列做重命名,兼容性更强。


两种方案的命名操作都是列层面的全局操作,时间复杂度和数据集行数无关,处理百万级以上数据时性能比预先给每个列表元素命名的方案高2~3个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:24:06