【发布时间】:2020-11-21 11:39:28
【问题描述】:
我尝试通过提供的参数以编程方式创建代码 sn-p,但保持目标编程语言动态。
我尝试了什么:
关注https://stackoverflow.com/a/64855295/8538074
我知道我可以使用opts <- knitr::opts_chunk$get()
这将包括一个可以尝试的引擎opts$engine
赌注设置为“SQL”。
我想这样的事情应该会起作用,因为: https://github.com/yihui/knitr-examples/blob/master/115-engine-sql.md https://github.com/yihui/knitr-examples/blob/master/115-engine-sql.Rmd
(但我需要从代码中渲染它,因为我通过 rmarkdown 文件的参数移交了相应的代码字符串)
我最好的尝试:
---
title: "xx"
output: html_document
params:
code: list(language = "SQL", code_string = "SELECt * FROM tbl LIMIT 15")
---
```{r setup, include=FALSE}
hook <- knitr::hooks_html()$source
opts <- knitr::opts_chunk$get()
language <- params$code$code$language
opts$engine <- language
code_string <- params$code$code_string
cat(hook(code_string, options = opts))
```
【问题讨论】:
-
首先你的代码有一些错误。首先解析输出参数,就像我在另一个问题上回答的那样:
chunks <- eval(parse(params$code))。然后您可以访问chunks$language和chunks$code_string。当我渲染文档时,我收到了由 Andre simon 安装 highlight 的错误。然后你可以试试或者设置opts$highglight <- FALSE。 -
你是对的,谢谢。如果有人需要,我会添加一个自我回答。或者当然会赞成并接受您的回答。
标签: r r-markdown