gpt4 book ai didi

r - 如何使用 `Recall()` 编写递归函数以递归列出给定目录中的目录?

转载 作者:行者123 更新时间:2023-12-04 06:37:03 24 4
gpt4 key购买 nike

Question询问有关在当前目录中列出目录(不是文件)的问题。我在对其中一个答案的评论中指出,我们不能使用 recursive函数的参数,如 dirlist.files递归列出当前目录中的目录。

对此显而易见的解决方案是编写一个递归函数,该函数列出当前目录中的目录,该函数依次在每个目录上调用自身,依此类推,添加到在递归结束时返回的目录的整体列表中.
Recall() function 似乎是这个的理想候选者,但我从来没有真正了解过如何编写一个递归函数,每次调用它时都会添加到最终输出中。

如何修改这个函数:

list.dirs <- function(path) {
x <- dir(path, full.names = TRUE)
dnames <- x[file_test("-d", x)]
dnames
}

让它通过 dnames 中的目录递归下降将它找到的任何目录添加到 dnames 中找到的所有目录的列表中目录,等等...?

最佳答案

这是一种方法:

list.dirs <- function(path) {
x <- dir(path, full.names = TRUE)
dnames <- x[file_test("-d", x)]
tmp <- character(0)
for(i in seq_along(dnames) ) {
tmp <- c(tmp, Recall(dnames[i]) )
}
c(dnames,tmp)
}

这只是将子目录添加到末尾,可以使用一些不同的逻辑来给出不同的排序。

关于r - 如何使用 `Recall()` 编写递归函数以递归列出给定目录中的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com