【问题标题】:How to wrap code and the output in markdown (.Rmd)如何在 markdown (.Rmd) 中包装代码和输出
【发布时间】:2016-02-02 13:14:50
【问题描述】:

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

```{r}
output <- "very long query for example url to some website............................................."
output
```

有什么办法不让 R 自动包装代码,比如 60 个字符之后?我尝试了tidy=TRUE, tidy.opts=list(width.cutoff=60) 选项,但它不起作用。

我希望输出也一样,因为我的查询输出是一些文本。我想以多行显示整个内容,而不仅仅是一行的开头。我该怎么做?

【问题讨论】:

标签: r markdown knitr r-markdown


【解决方案1】:

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

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

【讨论】:

  • 是的!非常感谢@ecbiz1。我束手无策,试图理解为什么整洁的添加对我的任何降价文件都没有帮助。这对于意识到您需要安装软件包非常重要。 (特别是因为没有任何错误消息告诉用户在当前库中找不到被调用的函数。
【解决方案2】:

自 2015 年以来情况发生了变化,但 FWIW 鉴于您现在使用的是 rmarkdown_1.8knitr_1.20

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

    • 断行控制代码块长度(如果你想 显示它)但请注意,在字符串中将添加\n (在这种情况下,您可能会受益于使用两种不同的代码块:一个用于显示代码,另一个用于输出);
    • 关于输出,您可以将代码块选项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

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

希望这会有所帮助。

【讨论】:

  • +1 这似乎是唯一有效的 SO 答案。这是次优的——我们不仅重复自己,而且输出很丑(它不supposed看起来像普通文本)。但它确实有效。
  • Datacamp 解释了在这种情况下如何通过使用代码块标签来避免代码重复。我还没有测试过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
相关资源
最近更新 更多