一段时间以来我一直在尝试寻找解决方案,但尚未找到令人满意的解决方案。我编写了很多 bash 脚本,但有时我想使用 R 或 Python 作为脚本的一部分。现在,我最终不得不编写两个脚本;原始的 bash 脚本执行前半部分任务,而 R 或 Python 脚本执行后半部分任务。我从 bash 脚本中调用 R/Python 脚本。
我对这个解决方案不满意,因为它将我的程序拆分为两个文件,这增加了事情不同步、需要跟踪更多文件等的可能性。有没有一种方法可以编写包含全部内容的文本块我的 R/Python 脚本,然后让 bash 将其吐出到一个文件中并向其传递参数并执行它?有更简单的解决方案吗?这比将简单的单行代码传递给 R/Python 更复杂,因为它通常涉及通过几个步骤创建和操作对象。
可能有很多解决方案,但这个有效:
#!/bin/bash
## do stuff
R --slave <<EOF
## R code
set.seed(101)
rnorm($1)
EOF
如果您希望灵活地将额外的 bash 参数传递给 R,我建议:
#!/bin/bash
## do stuff
R --slave --args $@ <<EOF
## R code
set.seed(101)
args <- as.numeric(commandArgs(trailingOnly=TRUE))
do.call(rnorm,as.list(args))
EOF
- 这允许灵活数量的参数,但假设它们都是数字
- 它还假设所有参数都将从 bash 脚本传递到 R 子脚本
显然你可以放松这些,例如按位置引用参数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)