python - 从 bash 脚本中生成并执行 R、Python 等脚本

标签 python r bash

一段时间以来,我一直在努力寻找解决方案,但还没有找到令人满意的解决方案。我写了很多 bash 脚本,但有时我想使用 R 或 Python 作为脚本的一部分。现在,我最终不得不编写两个脚本;执行前半部分任务的原始 bash 脚本,以及执行后半部分任务的 R 或 Python 脚本。我从 bash 脚本中调用 R/Python 脚本。

我对这个解决方案不满意,因为它将我的程序拆分为两个文件,这增加了事情不同步、需要跟踪更多文件等的可能性。有没有一种方法可以编写包含以下内容的文本 block 我的整个 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 子脚本

显然你可以放宽这些,例如按位置引用参数

关于python - 从 bash 脚本中生成并执行 R、Python 等脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769018/

相关文章:

python - 在列表中查找项目索引的最快方法?

Python,获取嵌入视频网址时遇到问题

r - 如何阻止 R ggplot 在我的图例中显示 "a"作为符号?

bash - 为什么管道传输到同一个文件在某些​​平台上不起作用?

linux - ;& 和 ;; 之间的区别在 bash 脚本中

python - 在 Windows 上使用 git-remote-hg

python - 如何在不实际打开浏览器 ("without using the webbrowser module"的情况下使用 Python 向服务器发送 URL 请求?

r - 独立转换多列

r - 如何有条件地选择每组中的一行/行?

python - 从 Bash 脚本调用 python 脚本