如何在markdown(.Rmd)中包装代码和输出

jja*_*iak 14 markdown r knitr r-markdown

在我的r部分文档中,我使用长代码,如:

```{r}
output <- "very long query for example url to some website............................................."
output
```
Run Code Online (Sandbox Code Playgroud)

有没有办法不让R自动包装代码,让我们说60个字符后?我尝试过tidy=TRUE, tidy.opts=list(width.cutoff=60)选项,但它不起作用.

我希望输出相同,因为我的查询输出是一些文本.我希望在很多行中显示整个内容,而不仅仅是在一行中开头.我该怎么做?

小智 21

我遇到了同样的问题,直到我意识到需要安装 R 包formatR。安装并加载此包后,请 tidy=TRUE, tidy.opts=list(width.cutoff=60) 在您的块中使用,或使用以下代码行进行全局设置:

knitr::opts_chunk$set(tidy.opts = list(width.cutoff = 60), tidy = TRUE)


Kev*_*les 5

自 2015 年以来情况发生了变化,但 FWIW 考虑到您现在正在使用rmarkdown_1.8and knitr_1.20:

  1. 它在默认的 html 输出中被正确处理;
  2. 如果您正在寻找pdf输出,您可以做的是

    • 断行以控制代码块长度(如果您想显示它),但请注意,在字符串中将\n添加 a (在这种情况下,您可能会受益于使用两个不同的代码块:一个用于显示代码,另一个用于显示代码)输出);
    • 关于输出,您可以设置代码块选项results,'asis'以便像处理常规文本一样处理输出,在这种情况下,您还可以使用paste()或paste0()使用乳胶标签来调整文本的显示方式。

所以:

1-显示代码

{r, eval = F}
output <- "Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
output
Run Code Online (Sandbox Code Playgroud)

2-获取输出

{r, results = 'asis', echo = F}
output <- "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "
output
Run Code Online (Sandbox Code Playgroud)

希望这能有所帮助。

  • +1这似乎是唯一真正有效的答案。这是次优的——我们不仅重复自己,而且输出很丑陋(它_应该_看起来不像普通文本)。但它确实有效。 (3认同)
  • [Datacamp](https://campus.datacamp.com/courses/reporting-with-r-markdown/chapter-two-embedding-code?ex=7) 解释了如何通过使用代码来避免这种情况下的代码重复块标签。我还没有测试过。 (2认同)