2011-03-09 45 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