簡體   English   中英

R 從 Shell 安裝包

[英]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 包。)

tl;博士

Rscript -e 'install.packages("drat", repos="https://cloud.r-project.org")'

您提到您正在嘗試將dplyr安裝到磁盤上的自定義lib位置。 請注意, dplyr包不支持。 您可以在dplyr#4641 中閱讀更多內容


此外,如果您正在安裝刊登在內部專用包CRAN樣庫(由創建drattools::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM