在R中如何高效获取文件夹路径,避免遍历大量文件?
解决方案:快速提取目标文件夹路径
方法1:优化base R的list.dirs()参数
默认list.dirs()会递归遍历所有层级的子目录,导致在包含大量文件的场景下速度极慢。如果只需要当前根目录下的直接子文件夹,可通过参数限制遍历范围:
# 定义目标根路径 root_path <- "/Users/name/Documents/project/" # 仅提取根目录下的直接子文件夹路径 sub_folders <- list.dirs(path = root_path, recursive = FALSE, full.names = TRUE)
该设置会跳过子文件夹内的所有文件,仅扫描根目录下的一级文件夹,大幅提升执行速度。
方法2:使用fs包的高效文件系统函数
fs包是专门针对文件系统操作优化的工具,性能远优于base R原生函数,尤其适合大目录场景:
# 安装并加载fs包(首次使用需安装) install.packages("fs") library(fs) # 直接提取目标路径下的所有文件夹 sub_folders <- dir_ls(path = "/Users/name/Documents/project/", type = "directory")
dir_ls()的type = "directory"参数会直接过滤出文件夹,完全不会遍历子文件夹内的文件,执行效率最高。
结果验证
运行上述任意代码后,sub_folders会返回你需要的纯文件夹路径列表:
'/Users/name/Documents/project/folder1/' '/Users/name/Documents/project/folder2/'
内容的提问来源于stack exchange,提问作者Shaggy Glitch
相关产品推荐
相关产品推荐

