如何先执行字符串中的嵌入式R代码,再解析为Markdown并转HTML?
解决字符串中嵌入R代码的执行与Markdown转HTML问题
我们需要处理一段包含嵌入式R代码(格式为r 代码)的字符串,先执行这些嵌入式代码并替换为实际结果,再将处理后的字符串解析为Markdown并转换为HTML,得到预期输出。示例场景代码如下:
foo <- 6 bar <- "kg" str <- "The *value* is `r foo` DKK per `r bar`" # str <- eval_inline(str) # 缺少执行嵌入式R代码的函数 # (推测knitr包中存在相关解决方案) cat(markdown::mark_html(str)) # 期望的<p>标签输出:<p>The <em>value</em> is 6 DKK per kg</p> # 而非:<p>The <em>value</em> is <code>r foo</code> DKK per <code>r bar</code></p>
解决方案
使用knitr包的knit_expand()函数可以识别并执行字符串中的嵌入式R代码,替换为实际运行值,之后再用markdown::mark_html()完成Markdown到HTML的转换。
完整实现代码
library(knitr) library(markdown) foo <- 6 bar <- "kg" str <- "The *value* is `r foo` DKK per `r bar`" # 执行嵌入式R代码,替换为实际结果 str_processed <- knit_expand(text = str) # 将处理后的Markdown字符串转换为HTML cat(mark_html(str_processed))
输出结果
运行代码后会得到预期的HTML输出:
<p>The <em>value</em> is 6 DKK per kg</p>
内容的提问来源于stack exchange,提问作者Relund
相关产品推荐
相关产品推荐

