2011-03-09 43 views
2

部分看起来像:特定项目当使用`源()`或`附加()`我的项目目录结构

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

其中\src,包含了一些1 - 功能 - 每个文件中,功能。

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

有几个解决方案,我看到:

  1. attach("./src")。我试图避免这种情况,因为:(1)谷歌风格指南建议避免使用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部分,只是将所有的功能放在主工作目录中。这里的问题是,我宁愿保持与目录结构是接近的约翰·迈尔斯·怀特的ProjectTemplate

  5. 投掷所有功能于一身的文件,./src/func.R和来源,。我想这种方法避免了“2”的丑陋。上面,但我真的想每个文件有一个函数。这样看起来更清洁。

+0

我认为这个问题是无关紧要的,因为它与统计分析无关。 SO看起来更合适,您可能会得到快速有效的答案。 – 2011-03-09 16:53:38

回答

6

尝试

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

编辑

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

@G:这是人们通常在R项目中做的事情吗?如果这是Splus,那么可以“附加()”目录并完成。似乎R中没有简单的等价物。 – lowndrul 2011-03-11 16:56:13

+0

经常使用R包。如果你只是想运行纯文件,然后有一个文件,其余的来源。然后你只有一个文件直接'source()'。 – 2011-03-11 17:44:38

1

如果你不想把一切都变成本地包,然后我会去选择2