我知道R中的source()
它需要加载路径和/或文件名,即保存在另一个.R文件中的函数。我需要的是基本相同的命令,但它应该从一个文件夹及其子文件夹加载每个.R文件。
是否存在oneliner(某些库)或者我是否必须为所有内容编写循环?
答案 0 :(得分:10)
这可能有效
lapply(list.files(pattern = "[.]R$", recursive = TRUE), source)
答案 1 :(得分:0)
在图书馆的R帮助中,您可以找到以下内容:
## If you want to source() a bunch of files, something like
## the following may be useful:
sourceDir <- function(path, trace = TRUE, ...) {
for (nm in list.files(path, pattern = "[.][RrSsQq]$")) {
if(trace) cat(nm,":")
source(file.path(path, nm), ...)
if(trace) cat("\n")
}
}
答案 2 :(得分:0)
您可以使用像
这样的简单递归函数sourceRecursive <- function(path = ".") {
dirs <- list.dirs(path, recursive = FALSE)
files <- list.files(path, pattern = "^.*[Rr]$", include.dirs = FALSE, full.names = TRUE)
for (f in files)
source(f)
for (d in dirs)
sourceRecursive(d)
}