Windows下用R生成多层目录结构CSV并统计最终子目录
解决方案:提取5层目录结构并生成统计用CSV
核心思路
用list.dirs()仅获取目录(默认不包含文件),筛选出刚好5层的子目录,拆分路径为gen1到gen5列,最后导出CSV。
完整代码
# 1. 设置根目录路径(Windows下用双反斜杠或正斜杠) root_dir <- "C:/your_target_directory" # 2. 获取所有子目录完整路径(仅目录,无文件) all_dirs <- list.dirs(path = root_dir, recursive = TRUE, full.names = TRUE) # 3. 筛选出第5层级(gen5)的目录 # 先计算根目录的层级数 root_level_count <- length(strsplit(root_dir, "/|\\\\")[[1]]) # 仅保留相对于根目录深度为5的目录 gen5_dirs <- all_dirs[sapply(all_dirs, function(dir_path) { length(strsplit(dir_path, "/|\\\\")[[1]]) == root_level_count + 5 })] # 4. 拆分路径为gen1到gen5的列 dir_parts_list <- lapply(gen5_dirs, function(dir_path) { path_parts <- strsplit(dir_path, "/|\\\\")[[1]] # 提取根目录之后的5个层级 path_parts[(root_level_count + 1):(root_level_count + 5)] }) # 转为数据框并设置列名 dir_df <- as.data.frame(do.call(rbind, dir_parts_list), stringsAsFactors = FALSE) colnames(dir_df) <- paste0("gen", 1:5) # 5. 导出为CSV(支持中文目录) write.csv(dir_df, "gen5_directory_stats.csv", row.names = FALSE, fileEncoding = "UTF-8")
关键说明
list.dirs()默认只返回目录,完全避开文件,不会因文件过多导致崩溃- 用
"/|\\\\"拆分路径,同时兼容Windows的反斜杠和正斜杠格式 - 若根目录是磁盘根(如
C:/),代码会自动适配层级计算 - 导出CSV时指定
fileEncoding="UTF-8",避免中文目录乱码
内容的提问来源于stack exchange,提问作者guppieregina
相关产品推荐
相关产品推荐

