我最近買了一臺新電腦,把我所有的作業檔案都搬到了上面。主要問題是,檔案結構與我以前的電腦略有不同。因此,為了讓我的R代碼正常作業,我需要改變每個檔案的setwd()中的路徑。有什么有效的方法可以做到這一點嗎?或者有什么更有效的最佳做法來設定目錄或將檔案讀入R?
uj5u.com熱心網友回復:
我強烈推薦這里包。與setwd()相比,組織、查找、閱讀以及與/跨R檔案協作的方式要有效得多,因為后者受到本地使用和路徑的約束。
uj5u.com熱心網友回復:
1)如果所有的路徑都在setwd命令中設定,那么作為第一步,定義你自己的setwd,檢查引數是否是一個舊的路徑,如果是,就用一個新的路徑替換它。 否則,軟體不需要改變。因此,它可以快速完成。
setwd < - function(dir) {
if (dir == "oldpath1") dir < -"newpath1"
else if (dir == "oldpath2") dir < -"newpath2"
# etc
base::setwd(dir)
}。
2)為了在將來也能解決這個問題,請將路徑定義為選項,并將它們放在你的.Rprofile檔案中,而不是上面的做法。
setwd < - function(dir) {
if (dir == "oldpath1">) dir < - getOption("MYPROJ_PATH1")
else if (dir == "oldpath2") dir < - getOption("MYPROJ_PATH2")
# etc
base::setwd(dir)
}。
并且在你的.Rprofile中
options(MYPROJ_PATH1 = "...anything...")
options(MYPROJ_PATH2 = "...不管...")
# etc
然后如果你再次移動計算機或因任何原因改變路徑,那么只需在.Rprofile.
中設定這些選項即可。這樣做的另一個好處是,如果您忘記了東西的位置,例如當您回傳到一個您已經有一段時間沒有作業的專案時,關鍵路徑位于您所有專案的.Rprofile中。
.Rprofile通常位于這個R命令所顯示的路徑中
。path.expand("~/.Rprofile"/span>)
但可以放在某些其他位置,如?Startup中所討論的。
3)隨著時間的推移,你可能想洗掉上面定義的setwd命令,并使用類似這樣的代碼來替換每一次對setwd的使用:
myproj_path1 <- getOption( "MYPROJ_PATH1")
setwd(myproj_path1)
另外,如果專案中的所有內容都可以放在一個單一的目錄樹中,你可能會簡化事情,在這種情況下,你可以只改變目錄樹的根,并將所有其他目錄保持為固定的相對路徑偏移,在移動到另一臺計算機時不會改變。 因此,只有一個根目錄需要在你每次移動時進行更改。
root <- getOption("MYPROJ_ROOT"/span>)
path1 <- file.path(root, "relative_path1")
path2 <- file.path(root, "relative_path2")
較小的專案通常可以這樣做,但如果有幾個專案共享資源,這很可能就不可能了。 例如,你可能有一個資料庫目錄是共享的,而其他目錄則不是。 無論如何,你可以通過在可行的范圍內固定相對路徑并只改變根目錄來盡可能地減少根路徑的數量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/322197.html
標籤:
下一篇:取多個不同大小的隨機樣本
