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
相关产品推荐
相关产品推荐

