将调用bash脚本时传入的参数传递到R脚本

4
我有一个bash脚本,它执行一些操作,然后调用Rscript。以下是一个简单的示例:
test.sh:
Rscript test.r

test.r:

args <- commandArgs()
print(args)

如何在命令行上使用./test.sh hello,使得 R 打印出 hello?
3个回答

4
您可以使用以下方式在bash脚本中将所有参数传递给R脚本:
```bash #!/bin/bash Rscript your_script.R "$@" ```
其中,`"$@"`表示将所有参数作为一个列表传递给R脚本。
#!/bin/bash

Rscript /path/to/R/script --args "$*"

exit 0

然后,您可以选择在R内丢弃$*的多少个参数。


3
我注意到处理这个问题的方法是: test.sh:
Rscript test.r $1

test.r:

args <- commandArgs(TRUE)
print(args)

$1代表传递给bash脚本的第一个参数。

当调用commandArgs()而不是commandArgs(TRUE)时,它不会从bash传递,而是会打印内部调用的其他参数。


0
关于asb的回答:
在bash脚本行中加入“--args”是无效的,因为“--args”会被当作我要传递给R脚本的实际参数的字面量。将其删除即可,例如:“Rscript /path/to/my/rfile.R arg1 arg2”。
bash版本:GNU bash,版本3.2.25(1)-release (x86_64-redhat-linux-gnu) Rscript版本:R脚本前端版本3.0.1 (2013-05-16)

我发现将TRUE参数传递给commandArgs(),可以与此代码结合使用。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接