R knitr Markdown:如何在代码块循环中输出格式化标题?
我刚好碰到过一模一样的问题!你现在用print()输出的是R控制台的默认格式,所以才会带[1]和引号,knitr根本没把它当成Markdown标题来解析。试试这两个关键调整:
- 给你的代码块加上
results='asis'参数,让knitr把代码输出直接当作Markdown渲染,而不是普通文本。 - 用
cat()代替print()来输出标题文本,它不会额外输出R的控制台格式,还能帮你控制换行。
给你个完整的示例代码:
--- title: "循环生成带标题的图表" output: html_document --- ```{r, results='asis'} # 模拟你的变量列表 vars <- c("Foobar", "Baz", "Qux") for (i in seq_along(vars)) { # 输出H2标题,记得加两个换行符:一个分隔标题和内容,一个保证Markdown识别正确 cat(paste0("## This chart relates to ", vars[i], "\n\n")) # 这里放你的绘图代码,比如基础绘图或者ggplot # 如果用ggplot的话,要显式调用print()哦! plot(rnorm(100), main = vars[i]) # 加个换行分隔当前图表和下一个标题,让排版更舒服 cat("\n") }
要是你用的是`ggplot2`,别忘了在循环里显式打印图表,比如: ```r library(ggplot2) p <- ggplot(data.frame(x = rnorm(100)), aes(x = x)) + geom_histogram() + ggtitle(vars[i]) print(p)
这样跑出来的结果里,每个图表前都会是正常的H2标题,完全符合你的需求~
内容的提问来源于stack exchange,提问作者iod
相关产品推荐
相关产品推荐

