R Markdown中knitr隐藏输出及绘图配置失效问题咨询
失效原因
配置不生效的核心原因是你启用了html_notebook输出格式:
html_notebook是交互式文档格式,渲染逻辑和普通静态文档不同,会优先读取逐块运行代码时留存的缓存输出(包括绘图、运行结果、提示信息),不会完全遵循knitr常规全局块参数规则- 如果你之前运行过文档内的代码块,生成的输出已经被写入notebook缓存,仅修改开头的全局参数不会自动清除已存在的缓存内容,自然看不到隐藏效果。
修复步骤
1. 补全全局块参数
把文档开头的配置代码块替换为下面的内容,补充对notebook格式生效的控制参数:
knitr::opts_chunk$set( echo = TRUE, # 需隐藏代码本身就改为FALSE fig.show = 'hide', fig.keep = 'none', # 强制不保留任何绘图输出,解决fig.show在notebook下失效问题 message = FALSE, warning = FALSE, results = 'hide' ) # 加载依赖包 suppressMessages(library(dplyr)) suppressMessages(library(ggplot2)) suppressMessages(library(knitr))
2. 清除旧缓存后重新渲染
- 关闭当前打开的Rmd文档,删除同目录下和文档同名的
.nb.html文件,以及同名的*_files缓存文件夹 - 不要使用RStudio的逐块运行/Run All功能,直接点击编辑器上方的
Knit按钮从头渲染全文档。
3. 可选:移除不需要的notebook输出格式
如果不需要交互式notebook预览功能,直接修改YAML头部删除html_notebook配置,从根源避免缓存干扰:
--- title: "Analytics" subtitle: 'Assessment' author: "Arden" output: html_document: df_print: paged pdf_document: default word_document: default ---
注意事项
- 检查文档内后续的单个代码块,不要单独设置
fig.show='hold'、results='markup'这类会覆盖全局配置的块参数 - 如果使用RStudio可视化编辑模式,先切回源码模式修改配置再渲染,避免可视化模式自动注入的块属性覆盖全局设置。
内容的提问来源于stack exchange,提问作者Arden Stricke
相关产品推荐
相关产品推荐

