如何执行变量中存储的R Markdown代码并渲染为HTML/PDF
可行解决方案
你之前的方案失败的核心原因是:R Markdown是混合了Markdown文本和R代码块的复合格式,不能直接当作纯R代码执行,也无法通过单个chunk参数实现全流程渲染。
方案1:直接使用rmarkdown::render的text参数(推荐)
新版rmarkdown包(≥2.0版本)的render函数原生支持直接传入R Markdown字符串,不需要写入本地磁盘,渲染效果和读取本地文件完全一致。示例代码如下:
# 你的动态生成的R Markdown字符串变量 rmkdown_code <- '--- title: "test" author: "me" date: "3 June 2019" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)
for (i in 1 : 3) { cat('\\n') print(summary(iris[i*50 : 50, "Sepal.Length"] )) }
'
直接渲染为HTML
rmarkdown::render(
text = rmkdown_code,
output_format = "html_document",
output_file = "render_result.html"
)
如果需要渲染为PDF,替换output_format参数即可,前提是本地配置好LaTeX环境
rmarkdown::render(
text = rmkdown_code,
output_format = "pdf_document",
output_file = "render_result.pdf"
)
#### 方案2:兼容老版本rmarkdown的虚拟连接方案 如果你使用的rmarkdown版本较低没有`text`参数,可以用`textConnection`创建虚拟文本连接作为输入源,同样不需要写入本地磁盘: ```r rmarkdown::render( input = textConnection(rmkdown_code), output_format = "html_document", output_file = "render_result.html" )
以上两种方案都会完整执行R Markdown中的所有代码块,生成的输出文件和读取本地.Rmd文件渲染的效果完全一致,代码执行结果、图表都可以正常生成。
内容的提问来源于stack exchange,提问作者Dev Ops
相关产品推荐
相关产品推荐

