使用R脚本从命令行执行简单绘图非常方便.但是,从bash脚本运行R并不方便.理想可能是这样的
#!/path/to/R
...
Run Code Online (Sandbox Code Playgroud)
要么
#!/usr/bin/env R
...
Run Code Online (Sandbox Code Playgroud)
但我无法完成其中任何一项工作.
另一个选择是将脚本纯粹保存在R中,例如script.R,并使用R --file=script.R或类似地调用它.但是,有时脚本会依赖于模糊的命令行开关,此时代码的一部分存在于脚本之外.例如:通过本地.Rprofile将事物从bash偷偷带入R中,所需的开关就是一切--vanilla意味着除外--no-init-file.
另一种选择是用于存储R标志的bash脚本,并且可以无痛地执行,然后调用R脚本.问题是,这意味着单个程序被分成两个文件,现在必须保持同步,一起转移到新机器等.
我目前最鄙视的选项是将R嵌入到bash脚本中:
#!/bin/bash
... # usage message to catch bad input without invoking R
... # any bash pre-processing of input
... # etc
R --random-flags <<RSCRIPT
# R code goes here
RSCRIPT
Run Code Online (Sandbox Code Playgroud)
一切都在一个文件中.它是可执行的,可以轻松处理参数.问题是像这样结合bash和R几乎消除了任何IDE不会在一个或另一个上失败的可能性,并且让我的心脏受到伤害.
我错过了一些更好的方法吗?
小智 126
内容script.r:
#!/usr/bin/env Rscript
args = commandArgs(trailingOnly = TRUE)
message(sprintf("Hello %s", args[1L]))
Run Code Online (Sandbox Code Playgroud)
从命令行调用:
chmod +x script.r
Run Code Online (Sandbox Code Playgroud)
The*_*hog 10
Miguel Sanchez的回应是应该的.执行Rscript的另一种方式可能是'env'命令来运行系统范围的RScript.
#!/usr/bin/env Rscript
Run Code Online (Sandbox Code Playgroud)
小智 9
#!/path/to/R不会起作用,因为R本身就是一个剧本,所以execve不开心.
我用 R --slave -f script
小智 6
如果您有兴趣解析R脚本的命令行参数,请尝试与版本2.5.x中的R捆绑在一起的RScript
http://stat.ethz.ch/R-manual/R-patched/library/utils/html/Rscript.html
| 归档时间: |
|
| 查看次数: |
120461 次 |
| 最近记录: |