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

时间:2011-03-09 16:37:43

标签: r project-management workflow

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

\projects\project\main.R
\projects\project\src

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

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

我看到了一些解决方案:

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

    Warning messages:
    

    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. 接近的目录结构。
  6. 将所有功能放在一个文件./src/func.R中,然后将其输出。我想这种方法避免了“2”的丑陋。上面,但我真的希望每个文件都有一个功能。只是看起来更清洁。

2 个答案:

答案 0 :(得分:6)

尝试

lapply(list.files("src", full.names = TRUE), source)

修改

lapply(Sys.glob("src/*"), source)

答案 1 :(得分:1)

如果您不想将所有内容放入本地包中,那么我会选择选项2。