list.dirs,但输出带有嵌套文件夹的列表

时间:2019-02-01 04:38:18

标签: r

我想知道-基于R的list.dirs为您提供了一个字符向量,其中嵌套的文件夹结构都被扁平化为一个字符向量。是否有功能将文件夹列表返回为类list?也就是说,如果存在./a/b/c,则当前的list.dirs返回

[1] "a"                                                                       
[2] "a/b"                                                        
[3] "a/b/c"                                           

但返回类似

的内容
$`a`
$`a`$`b`
$`a`$`b`$`c`
[1] "a/b/c"

也许我缺少一个简单的现有解决方案?

1 个答案:

答案 0 :(得分:0)

我不确定是否有一个简单的解决方案,但是我编写了一个功能类似的功能

ModelBuilder

基本上,recur.list <- function(x, y) { if(length(x) == 1) setNames(list(y), x[1]) else setNames(list(recur.list(x[-1], y)), x[1]) } listed_list.dirs <- function(folder_name) { vec <- strsplit(folder_name, "/") mapply(recur.list, vec, folder_name) } 是一个递归函数,它基于文件夹的深度创建嵌套列表,而recur.list将文件夹名称拆分为“ /”,并为每个文件夹创建单独的字符向量listed_list.dirs

folder_name

另一个例子

x <- c("a","a/b","a/b/c")
listed_list.dirs(x)

#$a
#[1] "a"

#$a
#$a$b
#[1] "a/b"


#$a
#$a$b
#$a$b$c
#[1] "a/b/c"