【问题标题】:How to show code but hide output in RMarkdown?如何在 RMarkdown 中显示代码但隐藏输出?
【发布时间】:2018-05-22 11:13:06
【问题描述】:

我希望我的 html 文件显示代码,而不是这个块的输出:

```{r echo=True, include=FALSE}
fun <- function(b)
    {
    for(a in b)
        {print(a)
        return(a * a)}
    }
y <- fun(b)
```

当我运行代码时,我需要打印来查看进度(实际上这是一个相当长的函数)。

但是在 knitr 文件中,我在另一个块中使用了输出,所以我不想在这个文件中看到它(并且没有进度的概念,因为代码已经运行了)。

这个echo=True, include=FALSE在这里不起作用:整个东西都被隐藏了(这是include=FALSE的正常行为)。

我可以使用哪些参数来隐藏打印,但显示我的代码?

【问题讨论】:

  • 试试{r echo=T, results='hide'}
  • 很好,这正是我想要的!我之前没见过results 参数
  • 但是如何隐藏 any and all 输出呢?使用results='hide' 仍会显示警告之类的内容,例如在使用library(package) 时对象被屏蔽时。是否可以选择隐藏将打印到控制台的所有内容?
  • 你可以在你的library 命令中使用warn.conflicts=F, quietly=T 来做到这一点,比如library(package, warn.conflicts=F, quietly=T)
  • 我不知道为什么,但这对我不起作用

标签: r knitr r-markdown


【解决方案1】:
```{r eval=FALSE}

文档会默认显示代码,但会阻止代码块被执行,因此也不会显示任何结果。

【讨论】:

  • 对我来说,我想展示代码而不是情节,所以我使用了echo=TRUE, eval=FALSE
  • 这样好多了。对我来说,result="hide" 只显示了代码的最后一行,eval=F 显示了整个代码。
  • eval=F 仅在您不必将此块的结果用于下一个块的情况下才好。
  • 我同意@igorkf,如果该块是用于下一个块的块,eval=F 不适合。请改用echo=T, results='hide'
  • @igorkf - 是的,我也同意。 eval=F 不会运行代码块。因此,脚本的其余部分将无法获得任何结果。这些选项都有用例。
【解决方案2】:

为了完全静音输出,这对我有用

```{r error=FALSE, warning=FALSE, message=FALSE}
invisible({capture.output({


# Your code here
2 * 2
# etc etc


})})
```

上面使用的5个措施是

  1. error = FALSE
  2. warning = FALSE
  3. message = FALSE
  4. invisible()
  5. capture.output()

【讨论】:

    【解决方案3】:

    results = 'hide' 选项不会阻止打印其他消息。 要隐藏它们,以下选项很有用:

    • {r, error=FALSE}
    • {r, warning=FALSE}
    • {r, message=FALSE}

    在每种情况下,相应的警告、错误或消息都会被打印到控制台。

    【讨论】:

      【解决方案4】:

      对于屏蔽library("name_of_library") 代码,即仅显示代码,{r loadlib, echo=T, results='hide', message=F, warning=F} 很棒。而且恕我直言,比library(package, warn.conflicts=F, quietly=T) 更好的方法

      【讨论】:

      • library(package, warn.conflicts=F, quietly=T) 在 Knitr 编织到 HTML 时抑制控制台中的消息,而不是 HTML 输出中的消息。
      【解决方案5】:

      要隐藏警告,您也可以这样做 {r, warning=FALSE}

      【讨论】:

        【解决方案6】:

        正如@J_F 在 cmets 中的回答,使用{r echo = T, results = 'hide'}

        我想扩展他们的答案 - 您可以访问大量资源来确定您的块和输出显示的所有可能选项 - 我在我的办公桌上保留了一份打印副本!

        您可以在 RStudio 网站上的 Cheatsheets 下找到它们(查找 R Markdown 备忘单 R Markdown 参考指南),或者在 RStudio 中导航到“帮助”选项卡,选择“备忘单”,并在那里查找相同的文件。

        最后要设置默认块选项,如果您希望大多数块具有相同的行为,您可以(在您的第一个块中)运行类似以下代码:

        ```{r setup, include=FALSE}
        knitr::opts_chunk$set(echo = T,
                              results = "hide")
        ```
        

        稍后,您可以像这样修改单个块的行为,这将替换 just 结果选项的默认值。

        ```{r analysis, results="markup"}
        # code here
        ```
        

        【讨论】:

        • 真的很好。我发现在执行 sudo 代码或创建具有功能代码(我可以测试)但不包括输出的笔记本时非常有用,这样我就可以保持简洁!谢谢。
        猜你喜欢
        • 2015-11-11
        • 2017-09-30
        • 1970-01-01
        • 2012-10-16
        • 1970-01-01
        • 2012-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多