R降价为PDF - 打印控制台输出

A.S*_*.Sh 4 pdf r rstudio r-markdown

我在RStudio工作了一门课程,我想用R markdown写下我的报告.我想在pdf中显示某些控制台输出作为报告,特别是输出的summary(model)位置model,例如使用该命令获得的线性模型lm.然而,默认情况下,控制台输出在转换为带有knitr的pdf之后,按原样显示,并带有"#" - 前面的符号,这对我来说既丑陋也很麻烦,在调整时也很麻烦报告的最终布局.

是否有更好的方式来显示控制台输出,特别是在将我的笔​​记本转换为pdf时?理想情况下,我想像输出周围的框(HTML转换似乎只是给你),并且最佳地能够添加标题来说明输出代表什么.最重要的是,没有恼人的'#' - 每一行都有标志.

我试过在这里搜索并搜索解决方案,但我没有找到解决我问题的任何东西.

DJa*_*ack 6

这是一个解决方法.我们的想法是在文本中转换控制台输出,您可以根据需要绘制和自定义.

---
title: "Untitled"
output:
  pdf_document: default
---

```{r, echo = F}
print_output <- function(output, cex = 0.7) {
  tmp <- capture.output(output)
  plot.new()
  text(0, 1, paste(tmp, collapse='\n'), adj = c(0,1), family = 'mono', cex = cex)
  box()
}
```

```{r, warning = F}
lm <- lm(mpg ~ hp, data = mtcars)

print_output(summary(lm))
```
Run Code Online (Sandbox Code Playgroud)

这使: 在此输入图像描述


Eli*_*lin 5

去掉 ## 是 rmarkdown 中的一个显示选项,它适用于整个文档的第一个代码块中的comment = ""任何块或opts_chunk$set(comment=NA)。

此外,您应该查看 pander 包以获取“漂亮”的输出打印。


Mar*_*zer 5

这是使用knitr hooks 的另一种方法。我们只是在块输出周围包装额外的 LaTeX 命令。

目录:

  1. 使用乳胶包的基本解决方案framed
  2. 使用乳胶包的灵活解决方案 fancyvrb

1.使用乳胶包的基本解决方案framed

---
title: "Output Hook"
output: pdf_document
---

```{r setup, include = F}
library(knitr)
opts_chunk$set(comment=NA)
def_hook <- knit_hooks$get("output")
knit_hooks$set(output = function(x, options) {
  out <- def_hook(x, options)
  return(paste("\\begin{framed}\\begin{verbatim}", x, "\\end{verbatim}\\end{framed}", collapse = "\n"))
})
```

```{r}
lm(mpg ~ hp, data = mtcars)
```
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

2. 使用乳胶包的灵活解决方案 fancyvrb

您甚至可以使用 latex 包以非常灵活的方式修改结果fancyvrb(有关选项,请参阅文档):

---
title: "Output Hook"
output: pdf_document
header-includes:
  - \DefineVerbatimEnvironment{myVerb}{Verbatim}{numbers=left,numbersep=1mm,frame=lines,framerule=0.4mm,rulecolor=\color{blue}}
---

```{r setup, include = F}
library(knitr)
opts_chunk$set(comment=NA)
def_hook <- knit_hooks$get("output")
knit_hooks$set(output = function(x, options) {
  out <- def_hook(x, options)
  return(paste("\\begin{myVerb}\n", x, "\\end{myVerb}", collapse = "\n"))
})
```

```{r}
lm(mpg ~ hp, data = mtcars)
```
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明