R/Sweave论点

Mad*_*Seb 6 arguments r sweave

我正在使用R和Sweave生成报告.

R CMD Sweave MyReport.Rnw

我希望能够向R代码发送参数,因为报告当然是"动态的".所以,我希望能够做到这样的事情:

R CMD SWeave MyReport.Rnw PatientId = 5

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

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

Yih*_*Xie 6

要从R命令行传递参数,可以使用该函数commandArgs(),但遗憾的R CMD Sweave是不支持额外的命令行选项.但是,你仍然可以通过R -e例如

R -e "Sweave('MyReport.Rnw')" --args PatientId=1
Run Code Online (Sandbox Code Playgroud)

MyReport.Rnw,你做一些文本处理commandArgs(TRUE),PatientId=1在这种情况下,它给你一个字符串.

但我相信更好的做法是直接Sweave()在R脚本中使用该函数; 例如,在这种情况下,您可以在脚本中编写流程

PatientId <- 1
Sweave("MyReport.Rnw")
Run Code Online (Sandbox Code Playgroud)

并在MyReport.RnwPatientId直接使用全局变量.如果要生成一系列报告,甚至可以使用循环PatientId.