[英]R install packages from Shell
我正在嘗試使用 R 為 Hadoop Streaming 實現一個 reducer。但是,我需要找到一種方法來訪問某些不是在 R、dplyr 等中構建的庫。 根據我的研究,似乎有兩種方法:
(1) 在reducer 代碼中,將需要的庫安裝到一個臨時文件夾中,它們將在會話完成時被釋放,如下所示:
.libPaths(c(.libPaths(), temp <- tempdir()))
install.packages("dplyr", lib=temp, repos='http://cran.us.r-project.org')
library(dplyr)
...
但是,這種方法將產生巨大的開銷,具體取決於您嘗試安裝的庫數量。 所以大部分時間都會浪費在安裝庫上(像 dplyr 這樣復雜的庫有大量的依賴項,在 vanilla R 會話上安裝需要幾分鍾的時間)。
所以聽起來我需要事先安裝它,這導致我們接近2。
(2) 我的集群相當大。 我必須使用像 Ansible 這樣的工具才能讓它工作。 所以我更喜歡用一個 Linux shell 命令來安裝庫。 我之前見過R CMD INSTALL...
,但是,感覺只會從源文件安裝包,而不是在 R 控制台中執行install.packages()
,找出鏡像,拉取源文件,在一個命令中安裝.
誰能告訴我如何在 shell 中使用一個命令行來非交互式安裝 R 包? (對於這么多背景知識很抱歉,如果有人認為我什至沒有遵循正確的哲學,請隨時在評論中留下應該如何管理整個集群 R 包。)
Rscript -e 'install.packages("drat", repos="https://cloud.r-project.org")'
您提到您正在嘗試將dplyr
安裝到磁盤上的自定義lib
位置。 請注意, dplyr
包不支持。 您可以在dplyr#4641 中閱讀更多內容。
此外,如果您正在安裝刊登在內部專用包CRAN樣庫(由創建drat
或tools::write_PACKAGES
),你可以很容易地結合repos
從CRAN自動參數和依賴關系。
Rscript -e 'install.packages("priv.pkg", repos=c("cran.priv","https://cloud.r-project.org"))'
這是R 存儲庫的非常方便的功能,盡管對於生產用途,我建議在本地緩存來自 CRAN 的包,並使用它們,因此您永遠不會對依賴項的重大更改感到驚訝。 有關在生產中處理 R 的質量信息,我建議查看 Wit Jakuczun 在 WhyR2019如何使 R 非常適合(不僅)企業中的機器學習: 幻燈片、視頻。
您可能會發現利特勒有用。 它是 R 的命令行前端/變體(使用 R 嵌入接口)。
我用的是install.r腳本都從外殼安裝包的時間。 還有第二個變體具有更多的命令行參數解析,但它具有附加的依賴性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.