在Jenny Bryan登高一呼,希望有人解決這種資料夾路徑總是要重設的問題時,這個rprojroot 包便誕生了,他主要解決了路近依賴的問題,而使用sub-directory結構取而代之,本身是個簡單的package,但算是為培養好的reproducible coding踏出一步。
rprojroot要發揮作用的話,要建立在兩個使用者的好習慣:
第一個:每個專案有固定的子資料夾結構,這我個人覺得很重要,專業素養便是從檔案管理做起,可以看下面的文章,對於如何管理好專案,裡面的建議頗受用
Managing a statistical analysis project – guidelines and best practices
R Workflow: Slides from a Talk at Melbourne R Users
Dynamic documents with R and LATEX as an important part of reproducible research
How to efficiently manage a statistical analysis project?
第二個:願意系統性的寫好代碼(可能30秒能搞定的代碼,必須多花兩倍時間,為了代碼的嚴謹)
假如使用者有上面這兩個習慣,這個包便可以幫助你的R代碼進步一點點,此包主要使用一個概念,便是為專案root資料夾設立“criteria”,藉由檢查當前的資料架內結構,是否為特定的形式如r package、r project,或是包含特定檔名的檔案。藉由這個criteria,來確定root路徑,而剩下的檔案便是用相對路徑來表示。
這邊有示範的代碼:
library(rprojroot #Make Criteria root <- has_file("README.md") #Fine the file dir <- find_root(root) data.path <-find_root_file("Data", criterion = root) #True or False criteria file.exists(find_root_file("Data", criterion = has_file("README.md")))
這邊則是我的放代碼的資料夾結構:
所以使用這個包來設定檔案路徑,未來只要整個資料夾給要合作的對象,基本上,重新執行就不會發生問題。