如何在Markdown (.Rmd)中包含代码和输出结果

32

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

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

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

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


你是否已经查看了这里:https://dev59.com/KWct5IYBdhLWcg3wUb5- 和这里 https://dev59.com/T18d5IYBdhLWcg3w-mbX? - symbolrush
2个回答

20

我之前也遇到了同样的问题,直到意识到需要安装R包formatR

安装并加载该包后,在代码块中使用tidy=TRUE, tidy.opts=list(width.cutoff=60), 或者使用以下代码行在全局设置它:

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


是的!非常感谢@ecbiz1。我已经快要崩溃了,试图理解为什么整洁的添加没有帮助我的任何标记文件。这非常重要,需要意识到您需要安装该软件包。(特别是因为没有任何错误消息告诉用户在当前库中找不到被调用的函数。 - Ari
这需要其他必要的软件包吗?我已经安装并调用了formatR,并尝试在全局和特定块中设置整洁选项,但对我来说它不起作用。 - Michael Clauss
你可以把你的代码放在这里吗? - ecbiz1

5
自2015年以来,情况已经发生了变化,但是鉴于您现在使用的是rmarkdown_1.8knitr_1.20,以下是需要注意的:
  1. 默认的html输出会妥善处理它;
  2. 如果您正在寻找pdf输出,您可以这样做:

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

所以:

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

希望这能帮到您。

3
+1 这似乎是 SO 上唯一真正有效的答案。它并不是最优解 - 我们不仅要重复自己,而且输出结果很难看(它本来不应该看起来像普通文本)。但它确实可以运行。 - Vorac
2
Datacamp 介绍了如何通过使用代码块标签来避免代码重复的情况。我还没有测试过。 - Vorac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接