首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >list.dirs,但输出包含嵌套文件夹的列表

list.dirs,但输出包含嵌套文件夹的列表
EN

Stack Overflow用户
提问于 2019-02-01 04:38:18
回答 1查看 48关注 0票数 0

我想知道-base R的list.dirs向你提供了一个字符向量,其中嵌套的文件夹结构都被展平为一个字符向量。是否有一个函数可以将文件夹列表作为类list返回?也就是说,如果./a/b/c存在,则当前的list.dirs将返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[1] "a"                                                                       
[2] "a/b"                                                        
[3] "a/b/c"                                           

而是返回类似这样的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$`a`
$`a`$`b`
$`a`$`b`$`c`
[1] "a/b/c"

也许我错过了一个简单的现有解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-03 03:05:28

我不确定是否有一个简单的解决方案,但我写了一个函数,它做类似的事情

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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创建单独的字符向量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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"

另一个例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
listed_list.dirs("Users/ronakshah/Downloads/")

#$Users
#$Users$ronakshah
#$Users$ronakshah$Downloads
#[1] "Users/ronakshah/Downloads/"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54472980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文