我想知道-base 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"
也许我错过了一个简单的现有解决方案?
发布于 2019-02-03 03:05:28
我不确定是否有一个简单的解决方案,但我写了一个函数,它做类似的事情
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/"
https://stackoverflow.com/questions/54472980
复制相似问题