2017-01-03 38 views
3

我使用packrat(v 0.4.8.-1)來創建一個快照以及與相應的R代碼一起的R軟件包依賴關係。我想向其他人提供R代碼和軟件包,以使我所做的工作(包括R環境)完全可重現。R:分拆和使用packrat快照的說明

我使用不同於我用來編寫R代碼並創建捆綁軟件的計算機來測試unbundling。我在R studio中打開了一個R代碼文件,並調用庫(packrat)來加載packrat(也是v 0.4.8-1)。然後,我打電話給packrat :: unbundle(bundle =「directory」,where =「directory」),它已成功解包。但隨後調用packrat :: restore()給了我錯誤「這個項目還沒有被打包。運行'packrat :: init()'到init packrat」。看起來init()不應該是必須的,因爲我不是試圖創建一個新的快照,而是利用bundle中的快照。 Packrat頁面(https://rstudio.github.io/packrat/)和CRAN幾乎沒有提供關於分拆的文檔,以幫助解決這個問題,或者我可以將我的代碼的用戶指向說明(可能會熟悉R但可能沒有使用packrat)的用戶。

那麼,有人可以提供明確的分步驟說明,瞭解捆綁快照的用戶應該如何解包,然後使用保存的快照運行R代碼文件?

+0

基於沉默,看起來可能更適合在[包問題頁面]上提出這個問題/提問(https://github.com/rstudio/packrat/issues?utf8=%E2% 9C%93&q =是%3Aissue%圖20是%3Aopen%20unbundle%20)。好問題,順便說一句。 – r2evans

回答

0

經過一番嘗試,我發現了一種似乎迄今爲止工作的方法。

我已經爲用戶提供了三個文件:

-tar.gz (packrat bundle file) 
-unbundle.R (R code file that includes a library statement to load 
the packrat library, and the unbundle command for the tar.gz file) 
-unbundle_readme.txt 

自述文件包含類似下面這些說明,到目前爲止,用戶已經能夠使用該軟件包的依賴關係運行R代碼裏面。 readme文件告訴用戶有關需求的信息(R,R studio,packrat,R軟件包開發先決條件(Rtools for Windows,XCode for Mac)),並將sessionInfo()的輸出包括到R代碼在指令之後應使用的文檔R軟件包版本隨之而來。在下面的例子中,'code_folder'是指tar.gz文件中包含R.代碼和相關輸入文件的文件夾。

舉例說明鬆綁:

步驟1

保存,但不擴大/解壓縮,tar文件到一個目錄。 當使用除R或R studio 以外的程序解壓tar文件時,訪問保存的軟件包依賴關係 時出現問題的可能性更大。

如果tar文件已被擴大, tar文件重新保存到一個新的目錄,它不應該是一個相同 目錄擴展tar文件,或 展開tar文件的子目錄。

步驟2

保存unbundle.R在相同的目錄中tar文件

步驟3

打開unbundle.R,使用R工作室

步驟4

執行unbundle.R (這將創建一個子文件夾'code_folder'。 請注意,這一步可能需要運行5-15分鐘。)

步驟5

關閉R工作室

步驟6

導航到子文件夾 'cold_folder'

步驟7

打開,使用R工作室 A R腳本(軟件包庫應該對應於下面列出的軟件包 這表示R studio是acces唱所保存的包 依賴關係。)

步驟8

執行將R代碼,這將利用該項目包庫。 使用上述 步驟加載軟件包庫後,無需爲每個 腳本重新加載軟件包庫。 R studio將繼續訪問您在R Studio會話中打開的每個腳本的軟件包依賴項 。如果 隨後關閉R-studio,然後從 打開unbundle目錄中的腳本,則R studio應該仍然可以訪問 依賴項,而無需重新加載保存的包 快照。