2013-12-18 90 views
1

我在這裏看到很多相關的答案,但我沒有得到一個正確的方法來解決我的問題在Windows系統下... 我知道鏈接the similar question 我明白了setwd()可以找到我想要的目錄,但是,我的R腳本可能會移動到另一個目錄而無需任何修改,所以我想知道當前的文件目錄,因爲存在像source(...)這樣的表達式,這個被稱爲源文件的執行文件位於一個R項目中的同一個父目錄,我該怎麼辦? 任何幫助表示讚賞。我怎樣才能得到R當前文件目錄

回答

2

基本上,如果你編寫腳本並且這些腳本取決於它們在哪裏,那麼你就是在做錯了。

在軟件包中編寫代碼。參數化功能使其通用。如果您有包含數據的文件夾,請將其中一個參數作爲文件夾。

調用source()的腳本不能可靠地定位自己,但是這不應該是一個問題,因爲WHATEVER調用的腳本知道哪裏的腳本(它,或者它還能怎麼稱呼呢?),所以它可以通過它作爲參數。喜歡的東西:

> youarehere = "C:\foo\" 
> source("C:\foo\bar.R") 

現在bar.R可以做setwd(youarehere),它會工作,即使寫的不好,使得它依賴於它包含的文件夾採購其他代碼。

或者,你可以這樣做:

> setwd(youarehere) 
> source("bar.R") 

在您的電話功能。

但是,真的,它是一個失敗,它是一個寫得不好的代碼的標誌。使用函數,編寫軟件包,使用devtools,其實並不難,那麼你的代碼就可以在任何地方工作,而且你不會編寫愚蠢的腳本,這些腳本是source()調用的曲折迷宮。

保持優雅。

1

您可以使用getwd()功能讓你的當前目錄,並給它一個名字,說:

cpath = getwd() 

另一個有用的功能是file.path,它可以幫助您指定與簡單的語法,新的目錄。例如,你想這是「上面」的當前目錄下一級目錄,你可以使用:

upp.dir = file.path("..", "cpath") 

這給upp.dir"../Your_Current_Dir"。如何改變當前目錄中的另一個文件夾(稱爲Folder_A)?使用:

folderA = file.path("cpath", "Folder_A") 

這些可能有助於輕鬆瀏覽文件系統。

+0

OP要文件的來源目錄,我認爲... – Spacedman

相關問題