如何让RMarkdown代码块的print输出显示在控制台中?
解决R Markdown代码块print输出不全显示在控制台的问题
这个现象是R Markdown的默认输出捕获逻辑导致的:没有赋值的顶层表达式(如你示例中的names(mtcars))属于R自动打印的内容,会同时同步到代码块下方和控制台;而显式调用print()的长内容、列表类内容会被knitr优先捕获送到块下方,不会同步到控制台。
可通过以下三种方式解决,按需选择即可:
- 调整全局运行设置(适合所有块都优先看控制台输出的场景)
打开RStudio→工具→全局选项→R Markdown,取消勾选Show output inline for all R Markdown documents,保存后所有代码块运行的输出都会直接发送到控制台,块下方不会默认展示,需要看完整排版输出时再knit文档即可。 - 单块指定不展示inline输出(适合仅部分块需要输出到控制台的场景)
给需要输出到控制台的代码块添加results = "hide"参数,块头部写法如下:
该设置会让当前块的输出不展示在块下方,全部自动发送到控制台,同时不影响其他代码块的inline输出逻辑。{r, results="hide"} names(mtcars) print(mtcars) - 强制指定单个打印内容输出到控制台(适合大部分块用inline输出,仅个别print需要看控制台的场景)
用capture.output()捕获打印内容后,通过stderr输出到控制台,stderr默认不会被knitr捕获,示例写法:# 仅将mtcars的打印内容强制输出到控制台 cat(capture.output(print(mtcars)), file = stderr(), sep = "\n")
内容的提问来源于stack exchange,提问作者IVIM
相关产品推荐
相关产品推荐

