首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R/ Sweave论点

R/ Sweave论点
EN

Stack Overflow用户
提问于 2012-02-22 17:04:16
回答 2查看 2.1K关注 0票数 6

我用R和Sweave来生成报告。

R CMD横波MyReport.Rnw

我希望能够向R代码发送参数,因为报告当然是“动态”.So,我希望能够这样做:

R CMD SWeave MyReport.Rnw PatientId=5

...and让R代码读取变量中的PatientId值.

我该怎么做?有人提到使用环境变量,但这似乎是一个不优雅的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-22 21:43:48

要获得从R命令行传递的参数,可以使用函数commandArgs(),但不幸的是,R CMD Sweave不支持额外的命令行选项。但是,您仍然可以通过R -e调用Sweave。

代码语言:javascript
复制
R -e "Sweave('MyReport.Rnw')" --args PatientId=1

MyReport.Rnw中,您可以在commandArgs(TRUE)上进行一些文本处理,在本例中为您提供了一个字符串PatientId=1

但我认为更好的做法是直接在R脚本中使用函数Sweave();例如,在本例中,您可以在脚本中编写流程,如

代码语言:javascript
复制
PatientId <- 1
Sweave("MyReport.Rnw")

MyReport.Rnw中,直接使用全局变量PatientId。如果要生成一系列报告,甚至可以为PatientId使用一个循环。

票数 6
EN

Stack Overflow用户

发布于 2012-02-22 18:10:22

您需要“写入”可以“读取”的值:

如前所述,使用sys.getenv()

  • configuration或数据文件可以轻松读取
  • 环境变量,您可以读取
  • 数据库存储

等. pp.回想一下,R代码是真正执行的,因此您始终可以执行两个步骤:

代码语言:javascript
复制
rScriptOne.r                   # write to foo.txt
R CMD Sweave MyReport.Rnw      # reads from foo.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9399459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档