You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言list.files函数使用问题求助:返回文件夹而非文件

解决R语言list.files遍历子文件夹文件的问题

嘿,我明白你的困扰了!你现在的问题在于没有遍历每个子文件夹去获取文件,而是直接在根目录调用list.files,自然拿不到子文件夹里的内容。咱们一步步来解决:

第一步:正确获取根目录下的子文件夹

你这部分的代码是对的,list.dirs确实能帮你拿到指定目录下的所有子文件夹:

dir_vec <- list.dirs(path = "E:/Louise/", full.names = FALSE, recursive = FALSE)
dir_vec

这里full.names=FALSE返回的是文件夹的名称(不是完整路径),recursive=FALSE确保只拿当前目录下的子文件夹,不会深入嵌套目录。

第二步:遍历每个子文件夹获取文件

接下来需要逐个访问这些子文件夹,用list.files提取里面的文件。这里推荐用lapply来批量处理,代码更简洁:

# 遍历每个子文件夹,提取其中的文件
files_list <- lapply(dir_vec, function(sub_folder) {
  # 拼接子文件夹的完整路径
  full_folder_path <- file.path("E:/Louise/", sub_folder)
  # 获取该文件夹下的所有文件(不递归,只拿当前层级的文件)
  list.files(path = full_folder_path, full.names = FALSE, recursive = FALSE)
})

# 给列表命名,对应每个子文件夹,方便查看
names(files_list) <- dir_vec

# 查看结果:每个元素对应一个子文件夹里的文件列表
files_list

可选:获取所有文件的完整路径

如果你想直接得到所有子文件的完整路径,不用分文件夹展示,可以用带递归参数的list.files,再过滤掉文件夹:

# 获取根目录下所有层级的文件和文件夹的完整路径
all_items <- list.files(path = "E:/Louise/", full.names = TRUE, recursive = TRUE)
# 过滤掉文件夹,只保留文件
all_files <- all_items[!file.info(all_items)$isdir]
all_files

为什么你原来的代码不行?

你之前写的files_vec<-list.files(path = "E:/Louise/",full.names=FALSE,recursive = FALSE...)是直接在根目录查询,recursive=FALSE意味着只看当前目录的内容。如果根目录下只有子文件夹(没有直接存放的文件),那这个调用要么返回空(默认include.dirs=FALSE,不显示文件夹),要么如果你不小心开了include.dirs=TRUE,才会返回文件夹名称——这显然不是你想要的子文件夹内的文件。

内容的提问来源于stack exchange,提问作者Vivien Leonard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:58:27