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

Jef*_*ler 6 r knitr r-markdown

在生成HTML文档时,如何使我的针织.Rmd文档不包装代码?每当我编织我的文件时,我得到如下输出:

不是我想要的......

您可以看到包含cbind调用的第一行被包装.这是由以下Rmd代码生成的.基本上,我希望看到生成的HTML文件看起来像在StackOverflow上这样(即使用水平滚动条).

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

```{r}
myveryveryveryveryverylongvariablenameanditsdataaaaaaaaaaaaaaaaaaaaaaaaaaa <- cbind(iris, iris, iris, iris, iris, iris, iris)
head(myveryveryveryveryverylongvariablenameanditsdataaaaaaaaaaaaaaaaaaaaaaaaaaa )
```
Run Code Online (Sandbox Code Playgroud)

那么另外,如何在第二行的文本输出中执行此操作?我试过了,options(width=...)但这似乎只是让输出更加混乱.我想它也看起来就像它在StackOverflow上做的那样(没有包装,带有水平滚动条):

  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
Run Code Online (Sandbox Code Playgroud)

Jef*_*ler 6

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

  1. 在.Rmd YAML标头中包含自定义样式表:

    css: report_styles.css

    其中包含以下样式:

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

    这使得回显的代码块不会换行并且它们具有水平滚动条.它还将使浏览器窗口调整大小时块输出不会进一步包裹.

  2. 现在,为了使块输出最初不换行,我们需要options(width=a-big-number)根据这个问题进行设置.

  • 这可能是个人喜好,但我认为将此行为作为默认值会很好。至少,我认为(1)应该可以通过块/全局块选项直接访问(如果尚未通过某种方式访问​​)。 (2认同)
  • 好答案!但是,设置`scroll`选项会向所有代码块添加滚动条。我最终使用了`overflow-x:auto;`,因为它仅在需要时才添加滚动条。 (2认同)

Sil*_*ish 5

这基本上是@JeffKeller 的答案,但您无需使用单独的 CSS 文件并在 YAML 标头中摆弄,您只需将 CSS.Rmd作为代码片段写入文件即可!例如,

```{css, echo=FALSE}
pre, code {white-space:pre !important; overflow-x:auto}
```
Run Code Online (Sandbox Code Playgroud)

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

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Run Code Online (Sandbox Code Playgroud)

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