我想知道---基础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"
也许我缺少一个简单的现有解决方案?
我不知道如果有一个简单的解决办法,但我写了一个函数,它有类似的功能
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"
另一个例子
listed_list.dirs("Users/ronakshah/Downloads/")
#$Users
#$Users$ronakshah
#$Users$ronakshah$Downloads
#[1] "Users/ronakshah/Downloads/"