将目录树表示为递归列表

2024-04-05

我被某项任务困住了。我想要的是一个函数,给定目录路径,它将返回递归列表作为输出。

输出的格式应为 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
}

我已经在一个小目录上测试了它

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"

如果这对于您的需求来说太慢,我会考虑将所有文件读取到一次调用中list.files with recursive = TRUE然后做一些解析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将目录树表示为递归列表 的相关文章

随机推荐