我正在尝试使用R实现Hadoop Streaming的reducer.但是,我需要找到一种方法来访问某些不是用R,dplyr..etc构建的库.基于我的研究似乎有两种方法:
(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...
,感觉就像只从源文件安装软件包而不是install.packages()
在R控制台中进行,找出镜像,拉出源文件,在一个命令中安装它.
谁能告诉我如何在shell中使用一个命令行来非交互式安装R包?(对不起这么多背景知识,如果有人认为我甚至没有遵循正确的哲学,请随意留下评论如何管理整个集群R包.)
虽然Dirk的小小看起来很有趣,但我发现它并不是那么简单,因为你需要部署install.r脚本才能使用该功能.这在交互式工作时不是问题,但对于自动安装脚本,它会增加一些开销 - 也许Dirk可以为此添加一些示例.
所以替代方案是:
Rscript -e 'install.packages("drat", repos="https://cran.rstudio.com")'