当我正在玩我的计算机群集时,我正在尝试开发一些脚本来帮助我保持群集上的计算机同步,就包,版本等而言,而不是登录到每台计算机并更新所有包,我想通过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
在我看来,这是一个不匹配的引号字符,或不匹配的括号,但我只是看不到不匹配。我已经尝试了我能想到的单引号和双引号的每一种排列。我还没有想到什么?
答案 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/'"),")\""))