Kar*_*ius 8 r list recursive-datastructures directory-tree
我遇到了某项任务.我想要的是一个函数,给定一个目录路径,将返回一个递归列表作为输出.
输出的格式应为myList $ dir $ subdir $ subdir $ fullFilePath
所以基本上我想将目录树表示为某个列表.我获取所有文件,获取每个文件的所有子目录,但我不知道如何将它全部扔进多个级别的列表中.
这是一个使用递归的解决方案:
tree.list <- function(file.or.dir) {
isdir <- file.info(file.or.dir)$isdir
if (!isdir) {
out <- file.or.dir
} else {
files <- list.files(file.or.dir, full.names = TRUE,
include.dirs = TRUE)
out <- lapply(files, tree.list)
names(out) <- basename(files)
}
out
}
Run Code Online (Sandbox Code Playgroud)
我在一个小目录上测试了它
test.dir <- tree.list("./test")
test.dir
# $a
# $a$`1.txt`
# [1] "./test/a/1.txt"
#
# $a$aa
# $a$aa$`2.txt`
# [1] "./test/a/aa/2.txt"
#
# $b
# $b$`3.txt`
# [1] "./test/b/3.txt"
Run Code Online (Sandbox Code Playgroud)
如果这对您的需求来说太慢,我会考虑将所有文件读入一个调用list.files,recursive = TRUE然后进行一些解析.
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |