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

R语言map_dfr中.id='filename'返回索引而非文件名的问题解决

解决方法

问题出在你当前的df.list.add是无命名的列表,map_dfr的.id参数只能用元素的位置序号填充filename列。以下两种修改方式都能让该列显示实际文件名:

方案一:直接遍历文件名列表(推荐)

省去中间列表的命名步骤,直接在读取文件时添加文件名列:

file.list <- list.files(pattern='*.xlsx', recursive = TRUE)

all_additions <- map_dfr(file.list, function(file) {
  read_excel(file, "Additions") %>%
    mutate(across(everything(), as.character),
           filename = file)
})

方案二:为中间列表添加文件名作为元素名

给df.list.add的每个元素命名为对应的文件名,这样map_dfr就能通过.id提取文件名:

file.list <- list.files(pattern='*.xlsx', recursive = TRUE)

df.list.add <- lapply(file.list, read_excel, "Additions")
# 为列表元素命名
names(df.list.add) <- file.list

all_additions <- map_dfr(df.list.add, ~.x %>% 
  mutate(across(everything(), as.character)), .id = "filename")

两种方案都能实现需求,方案一的代码更简洁高效,无需额外处理列表命名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:40:43