R脚本命令行传参出现Execution halted报错如何解决
问题原因
- 函数参数拼写错误:R内置
commandArgs()函数的参数采用驼峰命名规范,合法参数名为trailingOnly(第二个单词首字母O大写),你使用的全小写trailingonly不属于该函数的可识别参数,因此触发「未使用参数」报错。 - Shell变量未正确解析:终端命令中你使用单引号包裹
--args后的参数列表,Unix/Linux 环境下的shell中单引号会关闭所有特殊字符解析,$fileA这类变量会以字面量形式传入R,无法替换为你提前定义的实际取值。
解决方案
- 首先修正R脚本中的参数获取代码:
args <- commandArgs(trailingOnly = TRUE)
- 其次修改终端执行命令,将包裹参数的单引号替换为双引号,触发shell变量自动解析:
fileA='aaaa.txt' fileB='bbbb.txt' n=100 string='hello' R CMD BATCH --vanilla "--args $fileA $fileB $n $string" Rscript_file.R
- 补充提示:所有通过命令行传入R的参数默认均为字符类型,如果你需要使用数值型参数(比如示例中的
n=100),需要手动完成类型转换:
n <- as.numeric(args[3])
内容的提问来源于stack exchange,提问作者pingu87
相关产品推荐
相关产品推荐

