何时使用`source()`或`attach()`

low*_*rul 2 workflow project-management r

我的项目目录结构的一部分如下所示:

\projects\project\main.R
\projects\project\src
Run Code Online (Sandbox Code Playgroud)

其中\src包含一堆1-function-per-file,项目特定的函数.

问:将这些功能添加到工作目录的最佳实践方法是projects\project什么?

我看到了一些解决方案:

  1. attach("./src").我试图避免这种情况,因为(1)Google Styleguide建议避免使用attach()和(2)我收到了

    Warning messages:
    
    Run Code Online (Sandbox Code Playgroud)

    1: Reading Unix style database directory (./tmp) from Splus on Windows: may have problems finding some datasets, especially those whose names differ only by case (file tmp-script1.ssc should not have been made by Splus on Windows) in: exists(name, where = db) 这样做的时候.

  2. lapply(paste("./src/",list.files("./src/"),sep=""),source).这很好用,看起来很笨重.必须有更好的方法,对吗?

  3. 以他们的全名参考我的职能./src/myfunc.这会很快变得难看.我相信有更好的方法.

  4. 摆脱./src我的目录的一部分,只是把所有的功能扔在主工作目录中.这个问题是我宁愿保持一个接近John Myles White的目录结构ProjectTemplate

  5. 将所有函数放在一个文件中,./src/func.R并将其作为源代码.我想这种方法避免了"2"的丑陋.上面,但我真的希望每个文件都有一个功能.只是看起来更清洁.

G. *_*eck 6

尝试

lapply(list.files("src", full.names = TRUE), source)
Run Code Online (Sandbox Code Playgroud)

编辑

要么

lapply(Sys.glob("src/*"), source)
Run Code Online (Sandbox Code Playgroud)