如何在命令行向R脚本传递字符串类型参数
R命令行字符串参数传递修正方案
你遇到的报错核心原因是shell层的同类型引号嵌套冲突,你写的命令里外层用了"包裹--args参数段,内层给文件名加的"会被shell识别为外层引号的结束标记,导致整段参数解析错乱。
修正方法
方案1:外层改用单引号包裹参数段
shell中单引号包裹的内容会原样传递,不会解析内部的双引号,R可以正常识别字符串参数:
R CMD BATCH '--args CHR=1 file="file1.txt"' rfile.R test.Rout
方案2:内层双引号加转义符
如果要保留外层双引号,给内层的双引号前加反斜杠\转义,告诉shell这是普通字符:
R CMD BATCH "--args CHR=1 file=\"file1.txt\"" rfile.R test.Rout
更简便的无命名参数传法
如果不需要命名参数,直接按顺序传参可以避开引号处理的麻烦:
- 命令行写法:
R CMD BATCH "--args 1 file1.txt" rfile.R test.Rout
- R脚本内接收示例:
# 读取--args后面的所有参数,按顺序存为向量 args <- commandArgs(trailingOnly = TRUE) CHR <- as.numeric(args[1]) file <- args[2]
内容的提问来源于stack exchange,提问作者wkde
相关产品推荐
相关产品推荐

