list.dirs但产量与嵌套文件夹列表

问题描述 投票:0回答:1

我想知道---基础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"

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

r
1个回答
0
投票

我不知道如果有一个简单的解决办法,但我写了一个函数,它有类似的功能

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/"
© www.soinside.com 2019 - 2024. All rights reserved.