如何在R Markdown多项目HTML文档中复用大段文本内容?
在R Markdown中复用大段文本的方法
你可以用以下几种方式在单个R Markdown文档内复用大段文本,不用拆分文件也不用重复编写:
方法1:用R变量存储文本(最直观)
在文档开头的R代码块里定义需要复用的文本变量,支持完整的Markdown语法:
# 定义复用内容,支持Markdown格式 preface <- "这是所有项目共用的前言内容,可包含**加粗文本**、 - 无序列表 - 多行内容 甚至公式$E=mc^2$。" a1 <- "Project 1专属的A章节内容:abc def" a2 <- "Project 2专属的A章节内容:ghi jkl mnop" a3 <- "Project 3专属的A章节内容:qrs tuv wxyz" end <- "所有项目共用的结尾内容:end... end"
之后在tabset的各个项目中直接调用变量即可:
# document {.tabset .tabset-fade} ## Project 1 {-} `r preface` `r a1` `r end` ## Project 2 {-} `r preface` `r a2` `r end` ## Project 3 {-} `r preface` `r a3` `r end`
渲染时R会自动把变量中的内容解析为Markdown,完全匹配你的需求。
方法2:用knitr代码块标签复用(适合复杂内容)
如果复用的内容包含R代码或更复杂的动态结构,可以定义隐藏的代码块,再通过标签引用:
# 定义隐藏的复用块,include=FALSE表示不直接渲染 ```{r preface_block, include=FALSE} cat(" 这是前言内容,可嵌套R代码: 当前时间是:", Sys.time(), " ")
在需要的位置引用该块: ```r ```{r call_preface, echo=FALSE, results='asis'} # 调用之前定义的块 knitr::knit_child(text = knitr::knit_code$get("preface_block"))
这种方式适合包含动态计算内容的复用场景。 --- 内容的提问来源于stack exchange,提问作者guypf
相关产品推荐
相关产品推荐

