如何在R中遍历多子目录读取指定的cats.csv文件
解决多子文件夹下CSV文件读取问题
第一步:修正文件路径获取逻辑
你可以跳过先遍历子文件夹的步骤,直接递归查找所有cats.csv文件,这样更简洁且不易出错:
parent_folder <- "你的父文件夹路径" # 精确匹配文件名,避免误抓类似cats1.csv的文件 cat_files <- list.files(path = parent_folder, pattern = "^cats\\.csv$", full.names = TRUE, recursive = TRUE)
第二步:读取所有CSV文件
基础包实现(无需额外安装包)
# 读取所有文件,得到数据框列表 all_cats <- lapply(cat_files, function(path) { # 可选:指定编码避免乱码,根据实际情况调整 read.csv(path, encoding = "UTF-8") }) # 若需要合并成单个大数据框 all_cats_combined <- do.call(rbind, all_cats)
tidyverse工具链实现(更简洁的合并)
library(purrr) library(dplyr) # 读取并直接合并为单个数据框 all_cats_combined <- map_dfr(cat_files, ~read.csv(.x, encoding = "UTF-8"))
原代码可能失败的原因排查
- 路径问题:
dir(sub_folders, ...)传入多路径时,可能混入空值(部分子文件夹无cats.csv),可先过滤:cat_files <- cat_files[cat_files != ""] - 编码问题:CSV文件编码与R默认编码不匹配,需在
read.csv中指定encoding参数。 - 文件匹配问题:原
pattern = "cats"会匹配所有含cats的文件名,建议用精确匹配^cats\\.csv$。
内容的提问来源于stack exchange,提问作者xoxo
相关产品推荐
相关产品推荐

