knitr的spin():无法将内联R表达式嵌入标题中

3
我正在使用 knitrspin() 函数将一个 R 脚本渲染为 HTML(使用 RStudio 的“编译笔记本”命令)。
虽然在纯文本中包含动态的 R 表达式很容易,但这似乎对标题不起作用。
例如,第一个示例正确地将内联表达式嵌入到纯文本中:
library(knitr)

#' You can use the special syntax {{code}} to embed inline expressions, e.g.
{{mean(x) + 2}}
#' is the mean of x plus 2.

但是这个第二个例子在渲染HTML时只将标题样式应用于第一行(“交叉表格”),然后换行并恢复为普通文本:
library(knitr)
var0 <- "Sex"
var1 <- "Education"

#' # Crosstabulation of
{{var0}}
#' # by
{{var1}}
#' # .

如何将标题样式应用于块的所有行?我需要使用哪种替代语法?我错过了什么吗?

1个回答

1

我认为这是spin()的限制。你可以使用brew预处理文件,或让R以Markdown格式输出标题。

`%#%` <- function(tpl, vals) if(interactive()) vals else do.call(sprintf, c(fmt=tpl, vals)) 

var0 <- "Sex"
var1 <- "Education"

{{"# Crosstabulation of %s by %s " %#% list(var0, var1)}}

谢谢。当然,它并不完全等同(当作为纯R脚本运行时,{{expr}}语法将被执行而不是被忽略;但它绝对解决了我的问题。顺便说一下:library(knitr)不是必需的,最简单的示例可以简化为{{paste0("# Crosstabulation of **",var0,"** by **", var1,"**")}} - ldesio
我已经为interactive()添加了一个测试,以便在标准的R会话中不显示标题。 - baptiste

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接