我试图在批处理模式下使用我的R脚本,但R似乎无法正确解析引用的参数:
args=(commandArgs(TRUE))
for(i in 1:length(args)){
print(paste('ARG ',i,args[[i]],sep=" "))
}
Run Code Online (Sandbox Code Playgroud)
然后,如果提供带空格和引号的参数,例如:
R CMD BATCH "--args foo=2 bar=3 's=string with spaces'" test-parameters.R output
Run Code Online (Sandbox Code Playgroud)
输出是:
[1] "ARG 1 foo=2"
[1] "ARG 2 bar=3"
[1] "ARG 3 's=string"
[1] "ARG 4 with"
[1] "ARG 5 spaces'"
Run Code Online (Sandbox Code Playgroud)
当然我想要第三个参数s='string with spaces':有没有办法获得它?
谢谢!
是的,R CMD BATCH 的行为有点奇怪。
试试这个:
R --slave --vanilla --file=test-parameters.R --args foo=2 bar=3 "s=string with spaces" > output
Run Code Online (Sandbox Code Playgroud)
--slave 和 --vanilla 选项可能会根据需要替换为更合适的选项。