我有一个 R 代码
my_code.R
,它接受一个文件 test.txt
的参数。我可以使用:
Rscript -e my_code.R test.txt
并运行脚本,但我想使用 knitR 中的stitch() 来生成 pdf/tex 格式的脚本报告。
我已经研究了堆栈溢出并使用了以下建议,但没有得到任何结果:
Rscript -e "library(knitr);knit('my_code.R "-args arg1=test.txt" ')"
Rscript -e "knitr::stitch('my_code.R "-args arg1=test.txt"')"
这是关于我想要的内容的另一个类似讨论(链接),但可以选择添加参数。
我不明白为什么这是不可能的。这是
my_code.R
:
commandArgs(TRUE)
我只是跑步
Rscript -e "library(knitr); stitch('my_code.R')" --args foo bar whatever=blabla
我得到了输出
您在最初的尝试中似乎没有正确使用双引号。应该是
Rscript -e "library(knitr); stitch('my_code.R')" --args arg1=test.txt
您可以使用
knit2pdf
并使用其 envir
参数将参数传递给报表。
换句话说,解决方案是创建 2 个独立的文件:
knit2pdf
:m_code.R
m_code_report.Rnw
此脚本包含所有 R 代码。这个想法是创建一个环境变量“params”,在其中放置需要显示/呈现的所有参数。
library(knitr)
library(markdown)
ff <- commandArgs(TRUE)[1]
params <- new.env()
e$ff <- ff
## here I pass all the parameters to the report
## I assume that the report and the code R in the same location
## the result pdf also will be in the same location , otherwise you can set
## paths as you like
knit2pdf('m_code_report.Rnw',envir=params) report
报告显示结果使用环境“params”中包含的变量。
\documentclass{article}
\begin{document}
<<>>=
summary(ff)
@
\end{document}
然后您使用 Rscript 调用 Rscript,如下所示:
Rscript m_code.R "cars"
尝试
rmarkdown::render()
获取直接从 .R 文件创建的(例如 PDF)。也可以传递参数。 https://bookdown.org/yihui/rmarkdown-cookbook/rmarkdown-render.html