使用system在远程计算机上运行install.packages

时间:2015-09-24 17:59:22

标签: r install.packages

当我正在玩我的计算机群集时,我正在尝试开发一些脚本来帮助我保持群集上的计算机同步,就包,版本等而言,而不是登录到每台计算机并更新所有包,我想通过SSH运行系统调用。但是,我似乎无法正确地进行系统调用。这是我正在尝试做的一个例子。

system(paste0("C:/PuTTY/plink.exe [SSH stuff] ",
              "RScript -e ",
              "install.packages(", shQuote("HydeNet"), 
              ", repos = ",
              shQuote("http://mirrors.nics.utk.edu/cran/"),
              ")"))

理想情况下,这会在远程计算机上安装HydeNet包。我一直得到这个回报:

Error: unexpected end of input
Execution halted
Warning message:
running command 'RScript -e install.packages("HydeNet", repos = "http://mirrors.nics.utk.edu/cran/")' had status 1 

在我看来,这是一个不匹配的引号字符,或不匹配的括号,但我只是看不到不匹配。我已经尝试了我能想到的单引号和双引号的每一种排列。我还没有想到什么?

1 个答案:

答案 0 :(得分:1)

您是否先在当地尝试过该命令?

Rscript的语法为Rscript -e "expression in quotes"

看起来像install.packages中的Rscript期望包名称和repo用单引号。

使用此命令

system(paste0("C:/PuTTY/plink.exe [SSH stuff] ",
       "RScript -e ","\"install.packages(", shQuote("'HydeNet'"), 
       ",repos = ",shQuote("'http://mirrors.nics.utk.edu/cran/'"),")\""))