使用lapply合并CSV文件时如何保留文件名?
解决方法
Base R 实现
直接修改lapply中的逻辑,自定义读取函数,在读取每个CSV文件后添加存储文件名的列:
setwd("") files <- list.files("folder", pattern = ".csv", recursive = T, full.names = T) # 自定义读取函数,附带文件名 read_with_filename <- function(file_path) { # 读取文件,跳过前15行 df <- read.csv(file_path, as.is = TRUE, skip = 15, header = TRUE) # 添加文件名列:用basename仅保留文件名(不含路径),需完整路径则直接用file_path df$filename <- basename(file_path) return(df) } # 批量读取并合并表格 data <- do.call(rbind, lapply(files, read_with_filename))
Tidyverse 简洁写法
如果习惯用tidyverse工具链,purrr::map_dfr可自动合并并添加来源标识:
library(tidyverse) setwd("") files <- list.files("folder", pattern = ".csv", recursive = T, full.names = T) data <- map_dfr(files, function(file) { read.csv(file, as.is = TRUE, skip = 15, header = TRUE) %>% mutate(filename = basename(file)) })
修改后合并的data表格会新增filename列,每条数据都会对应其原始CSV文件的名称。
内容的提问来源于stack exchange,提问作者Marta Román
相关产品推荐
相关产品推荐

