2017-07-28 130 views
1

我想測試一下,我已經設置了我的包依賴項並正確導入。我認爲最好的檢查方法是使用新的R安裝,但我不想刪除所有現有的庫來執行此測試。最簡單的方法來測試R包安裝在新鮮的R安裝?

有沒有一種相對無痛的方式來快速創建一個孤立的R實例只有基礎庫和測試安裝?最好能夠在我完成後輕鬆地將整個事情撕下來。

+0

如果你已經安裝了anaconda python。您可以創建一個虛擬環境,隔離內容,您可以安裝任何您喜歡的內容,然後通過卸載環境將其全部解散。 – sconfluentus

+0

謝謝,我已經在研究這個或Docker,conda似乎更容易管理,但它並沒有R的最新版本。 – shians

+0

我的R安裝在我的jupyter筆記本電腦環境中。它可能不是最近的,但它已經完成了我到目前爲止所要求的所有內容...... – sconfluentus

回答

1

我已經安裝在計算機上的蟒蛇/ miniconda,它可以被用來在我的機器上

conda create -n r-dev -c r r-essentials 

不幸的是創造的R環境ElementaryOS Loki 0.4。這並沒有正確設置tk/tcl,運行conda install tk, conda install tcl沒有幫助,結果是install.packages()在搜索CRAN鏡像時會失敗。我只需要devtools所以解決方法是使用

conda install r-devtools 

而且我需要Bioconductor的包,所以我需要

R>source("https://bioconductor.org/biocLite.R") 
R>biocLite("BiocInstaller") 

這樣就完成了我所需要的環境,然後我用devtool::install_github()來測試我的包的安裝。

1

您可以(相當容易)恰當地使用「庫路徑」 - 例如通過環境變量R_LIBS和/或R_LIBS_USER。其他選項是直接設置.libPaths()。全部細節在help(Startup)

與沒有附加依賴關係的包結合使用時應該這樣做。

這是一個小小的演示,只需在當前環境中使用文件~/.Renviron即可。我什麼都沒有,但「基地R」和它的包可見:

[email protected]:/tmp/libDemo$ cat .Renviron 
R_LIBS="" 
R_LIBS_USER="" 
R_LIBS_SITE="/usr/lib/R/library" 
[email protected]:/tmp/libDemo$ Rscript -e 'print(.libPaths())' 
[1] "/usr/lib/R/library" 
[email protected]:/tmp/libDemo$ Rscript -e 'print(installed.packages()[,1:2])' 
      Package  LibPath    
base  "base"  "/usr/lib/R/library" 
boot  "boot"  "/usr/lib/R/library" 
class  "class"  "/usr/lib/R/library" 
cluster "cluster" "/usr/lib/R/library" 
codetools "codetools" "/usr/lib/R/library" 
compiler "compiler" "/usr/lib/R/library" 
datasets "datasets" "/usr/lib/R/library" 
foreign "foreign" "/usr/lib/R/library" 
graphics "graphics" "/usr/lib/R/library" 
grDevices "grDevices" "/usr/lib/R/library" 
grid  "grid"  "/usr/lib/R/library" 
KernSmooth "KernSmooth" "/usr/lib/R/library" 
lattice "lattice" "/usr/lib/R/library" 
MASS  "MASS"  "/usr/lib/R/library" 
Matrix  "Matrix"  "/usr/lib/R/library" 
methods "methods" "/usr/lib/R/library" 
mgcv  "mgcv"  "/usr/lib/R/library" 
nlme  "nlme"  "/usr/lib/R/library" 
nnet  "nnet"  "/usr/lib/R/library" 
parallel "parallel" "/usr/lib/R/library" 
rpart  "rpart"  "/usr/lib/R/library" 
spatial "spatial" "/usr/lib/R/library" 
splines "splines" "/usr/lib/R/library" 
stats  "stats"  "/usr/lib/R/library" 
stats4  "stats4"  "/usr/lib/R/library" 
survival "survival" "/usr/lib/R/library" 
tcltk  "tcltk"  "/usr/lib/R/library" 
tools  "tools"  "/usr/lib/R/library" 
utils  "utils"  "/usr/lib/R/library" 
[email protected]:/tmp/libDemo$ 
+0

重點是測試我的軟件包的依賴關係,確保所有內容都已正確安裝,並且函數將按預期運行。基本上我擔心我的包可能缺少DESCRIPTION中的依賴項,我不會注意到,因爲我的系統上已經有了所有必需的包。 – shians

+0

查看我的擴展答案。剛纔定義了'R_LIBS_USER =/tmp/libDemo/lib'並且安裝到那裏。 –

+0

感謝Dirk,不幸的是我似乎已經污染了所有標準的'.libPaths()',我的'/ usr/lib/R/library'是最乾淨的,甚至包含了Hadley的所有Tidyverse和Bioconductor的所有基本依賴項。 – shians