R Markdown HTML 代码块和输出中缺少水平滚动条

Missing horizontal scroll bar in R Markdown HTML code chunks and output

如何让编织的 .Rmd 文档在生成 HTML 文档时不换行代码?每当我编织我的文件时,我都会得到如下输出:

您可以看到包含 cbind 调用的第一行被换行了。这是由以下 Rmd 代码生成的。基本上,我希望看到生成的 HTML 文件看起来像它在 Whosebug 上的样子(即带有水平滚动条)。

---
title: "Title"
author: "Author"
date: "March 25, 2016"
output: html_document
---

```{r}
myveryveryveryveryverylongvariablenameanditsdataaaaaaaaaaaaaaaaaaaaaaaaaaa <- cbind(iris, iris, iris, iris, iris, iris, iris)
head(myveryveryveryveryverylongvariablenameanditsdataaaaaaaaaaaaaaaaaaaaaaaaaaa )
```

那么另外,第二行的文本输出怎么办呢?我试过 options(width=...) 但这似乎只会使输出更加混乱。我希望它看起来也和 Whosebug 上的一样(没有换行,带有水平滚动条):

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2  setosa          5.1         3.5          1.4         0.2  setosa          5.1         3.5          1.4         0.2  setosa          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2  setosa          4.9         3.0          1.4         0.2  setosa          4.9         3.0          1.4         0.2  setosa          4.9         3.0          1.4         0.2
3          4.7         3.2          1.3         0.2  setosa          4.7         3.2          1.3         0.2  setosa          4.7         3.2          1.3         0.2  setosa          4.7         3.2          1.3         0.2
4          4.6         3.1          1.5         0.2  setosa          4.6         3.1          1.5         0.2  setosa          4.6         3.1          1.5         0.2  setosa          4.6         3.1          1.5         0.2
5          5.0         3.6          1.4         0.2  setosa          5.0         3.6          1.4         0.2  setosa          5.0         3.6          1.4         0.2  setosa          5.0         3.6          1.4         0.2
6          5.4         3.9          1.7         0.4  setosa          5.4         3.9          1.7         0.4  setosa          5.4         3.9          1.7         0.4  setosa          5.4         3.9          1.7         0.4

在评论中的一些人的帮助下,我能够拼凑出一个解决方案。有两个步骤:

  1. 在 .Rmd YAML 中包含自定义样式 sheet header:

    css: report_styles.css

    其中包含这些样式:

    pre, code {white-space:pre !important; overflow-x:scroll !important}

    这使得回显的代码块不会换行,并且它们有一个水平滚动条。它还将使当浏览器 window 调整大小时,块输出不会 进一步包装

  2. 现在,为了让块输出最初不换行,我们需要根据 this question.

  3. 设置 options(width=a-big-number)

这基本上是@JeffKeller 的回答,但与其使用单独的 CSS 文件并在 YAML header 中摆弄,不如将 CSS 写入 .Rmd ] 文件作为代码片段!例如,

```{css, echo=FALSE}
pre, code {white-space:pre !important; overflow-x:auto}
```

我倾向于在大约与我进行其他设置的相同早期时间点执行此操作,例如

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

(也许这更像是评论,但我不能真正将其格式化。不过从对其他答案的评论来看,我认为有些人可能会觉得这很有用。)

两个答案的另一种选择 - 使用 html:

在 YAML header 之后写 css
<style>
pre {
  white-space: pre-wrap;
  background: #F5F5F5;
  max-width: 100%;
  overflow-x: auto;
}

</style>