从文件夹和子文件夹加载所有文件

时间:2015-09-30 09:21:53

标签: r

我知道R中的source() 它需要加载路径和/或文件名,即保存在另一个.R文件中的函数。我需要的是基本相同的命令,但它应该从一个文件夹及其子文件夹加载每个.R文件。

是否存在oneliner(某些库)或者我是否必须为所有内容编写循环?

3 个答案:

答案 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)
}