我有一个 bash 脚本,它做一些事情,然后调用 Rscript。这里举一个简单的例子来说明:
测试.sh:
Rscript test.r
测试.r:
args <- commandArgs()
print(args)
如何./test.sh hello
在命令行上使用 R 打印你好?
你可以让 bash 使用类似这样的 bash 脚本将所有参数传递给 R 脚本:
#!/bin/bash
Rscript /path/to/R/script --args "$*"
exit 0
然后,您可以选择需要在 R 中丢弃多少来自 $* 的参数。
我注意到处理这个问题的方法是:
测试.sh:
Rscript test.r $1
测试.r:
args <- commandArgs(TRUE)
print(args)
$1
表示传递给 bash 脚本的第一个参数。
当调用commandArgs()
而不是 时commandArgs(TRUE)
,它不会从 bash 传递,而是会打印内部调用的其他参数。
关于asb的回答:
having "--args" in the line of bash script doesn't work, the "--args" was taken as the literal of real argument that I want to pass into my R script. Taking it out works, i.e. "Rscript /path/to/my/rfile.R arg1 arg2"
bash version: GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) Rscript version: R scripting front-end version 3.0.1 (2013-05-16)