将目录结构转换为嵌套列表的好方法是什么?我希望每个目录都是一个列表,可以包含单个元素实体(文件)或子列表(其他目录)。
我打算使用list.dirs
和list.files
编写一个递归函数,但是可能还有另一种方法,因为这似乎是一个常见的结构。
## example: make directories and files
## Note: this makes files in a folder called 'test' on your computer
dir.create("test")
for (i in 1:3) dir.create(file.path("test", paste0("sub dir", i)))
dir.create("test/sub dir1/sub sub dir")
writeLines("thing", "test/text.txt")
writeLines("thing1", "test/sub dir1/text.txt")
writeLines("thing2", "test/sub dir1/text1.txt")
## Hoping for a result like this, I guess it could be "" instead of list() for empty directories
res <- list(test=list(
"text.txt",
`sub dir1`=list(`sub sub dir`=list(), "text.txt", "text1.txt"),
`sub dir2`=list(),
`sub dir3`=list()
))
str(res)
# List of 1
# $ test:List of 4
# ..$ : chr "text.txt"
# ..$ sub dir1:List of 3
# .. ..$ sub sub dir: list()
# .. ..$ : chr "text.txt"
# .. ..$ : chr "text1.txt"
# ..$ sub dir2: list()
# ..$ sub dir3: list()