【问题标题】:Difference between R MarkDown and R NoteBookR MarkDown 和 R NoteBook 的区别
【发布时间】:2023-03-05 16:10:01
【问题描述】:

我试图从高层次上了解R MarkdownR NoteBook 之间的区别。我知道它们是相互关联的,但我想弄清楚它们是如何相关的。我的理解是这样的:

我知道 R Notebooks 确实是 R Markdown 文档,但我对术语感到困惑。

RStudio 新文件选项同时具有R MarkdownR NoteBook,选择其中任何一个都会打开R Markdown 文件,但有细微差别。 所以只是想弄清楚为什么会有两个选项,两者之间有什么区别?

我知道 R Notebooks 是新推出的,R Markdown 已经存在了一段时间。部分困惑可能是因为在引入 R Notebook 之前我从未使用过R Markdown,所以我的相关或更具体的问题是

R NoteBook 与仅使用 R MarkDown 有何不同,或者 R NoteBook 带来了哪些新功能?

我在网络搜索中的所有点击都指向 R Notebook 使用 R Markdown,但我没有找到任何关于两者之间具体不同之处的帮助。

【问题讨论】:

  • 我使用 knitr 和 LaTeX,所以我选择了 R Sweave 选项。没有使用 RMarkdown,我只能说 LaTex 可以做任何事情,但这种能力带来了复杂性和学习曲线。此外,还有一个庞大的支持者社区以及丰富的书籍和资源。
  • 感谢@lawyeR。我不担心资源问题,我可以很好地解决 R 和 LaTeX 的问题。我确实想知道 Sweave 是什么,但我想我以后会担心的。感谢您对此的见解。现在我只关注这些不同风格的 R 之间的顶级差异。
  • 虽然您是阅读手册的忠实拥护者,但如何阅读您投反对票的实际问题并针对问题中提出的问题进行具体回答,而不是从文档中转储材料?

标签: r rstudio knitr r-markdown rnotebook


【解决方案1】:

据我了解和我的设置,没有编码差异。 区别在于渲染。文件扩展名相同。

当您制作新的 R Notebook 时,它会在标题的输出选项中添加 html_notebook。这就是区别。然后,您可以快速预览渲染而无需编织它。每次保存时它也会刷新预览。但是,在该预览中,您没有代码输出(没有数字,没有表格..)(至少在我的设置中)。如果输出中没有html_notebook,则没有按钮预览

您可以看到预览选项显示,但您也可以以任何您想要的格式编织它。当你这样做时,它会将它添加到标题代码中。

但是,如果您的标题中没有 html_notebook,您只能编写代码以查看它的外观(整本书)(请忽略我在图片中添加的附加默认选项)

并且预览选项不显示在下拉菜单中

否则它的工作原理相同。对于某些默认配置,输出也默认隐藏在代码部分中。

请注意,您可以在标题中混合使用多个输出选项,以便保留预览并保留您的编织选项以供导出。

【讨论】:

  • 作为附加组件,笔记本存在 UTC 错误(考虑到口音和非英文字符)。它会搞砸你的输出和文件......所以最好坚持降价......这一点仍在解决(据我所知)
  • 您的回答绝对是我认为使用几个月后的不同之处。击败我的是 R Notebook 是一切,并且高于 R MarkDown。那么为什么要继续使用 R Markdown 呢?您可以使用 R 笔记本并直接“编织”而不是“预览”,并且您拥有 R Markdown 功能!
  • 我认为更多的是遗留问题,以免混淆已经使用 Rmarkdown 的人。再加上当前版本的笔记本(或 R)有我上面提到的那个错误,它基本上阻止了我使用它。根据我使用的方式(从 rmardown 到 notebook 或 notebook 到 rmarkdown),我的文本也被源文件中的乱码替换。所以我坚持降价,直到我能解决这个问题。特别是笔记本预览对我来说不是那么有用,只是预览没有情节等的文本。但它有很大的潜力。
  • 当您使用 ar notebook 时,您肯定会在预览、图形(动态和静态)、表格等中获得所有输出......这个答案应该被修改为删除声明说你不明白。 R notebook 的优势在于这一点,每次重新编译都可以获得所有输出,因为预览会记住你块的最后输出。它使您能够反复编写(这始终是您所需要的)
【解决方案2】:

最近我发现这篇文章让我清楚地了解了 R Markdown 与 R Notebook 的问题。 http://uc-r.github.io/r_notebook

以下是一些相关的行:

编写 R Notebook 文档与编写 R Markdown 文档没有什么不同。文本和代码块语法与您在 R Markdown 教程中学到的没有什么不同。主要区别在于 R Notebook 的交互性。主要是当在 R Markdown 文档中执行块时,所有代码一次发送到控制台,但在 R Notebook 中,一次只发送一行 .这允许在一行出现错误时停止执行。

在 RStudio 中创建 R Notebook 时,在 knit vs. preview 上也有这个:

预览会显示编辑器内容的渲染 HTML 副本。因此,与 Knit 不同,Preview 不运行任何 R 代码块。而是显示上次在编辑器中运行时块的输出。

希望你觉得它有用。

【讨论】:

  • 第二部分对理解差异特别有帮助!
  • 这个答案对我帮助最大。
【解决方案3】:

从上述答案中,最重要的区别之一并不完全清楚。

来自Bookdown book 的第 3.2.1.3 节:

Run 菜单中还有一个Restart R and Run All Chunks 项 在编辑器工具栏上,它为您提供了一个新的 R 会话之前 运行所有的块。这类似于Knit 按钮,它 启动一个单独的 R 会话来编译文档。

换句话说,编织创建了一个新环境并在那里运行所有代码。相比之下,R Notebook 使用 Global Environment 来呈现 HTML 文件。事实上,对于 R Notebook,每次保存 .Rmd 文档时都会更改 HTML 文件。 Preview 按钮仅以当前状态打开 HTML 文件。没有代码运行。 Preview 字面意思是它所说的:它只是向您展示已经完成的事情。

为什么这很重要?例如,如果打开了 R Notebook .Rmd 文件,但没有运行代码块,则 HTML 文件将渲染所有 markdown 和输入代码,但不会出现任何输出。或者,假设您在控制台中定义了一些变量x,但不在代码块中。如果您尝试在 R Notebook 中的某处使用x,它将正常工作。预览 HTML 文档也可以正常工作。另一方面,编织文档会产生“未知变量”错误,因为编织是在新环境中运行所有代码,而变量x从未在markdown文件中的任何地方定义过。

【讨论】:

    【解决方案4】:

    不同之处在于,在 R Notebok 中,您可以编写 Markdown 和 R-code Chunks 并直接执行它们并立即看到结果。它是你自己的笔记本。

    R Markdown 可以在 html、pdf 或 word 文档中创建漂亮的输出。结合 Markdown 和 R-Code-Chunks。 A short introduction and motivation can be found here.

    If you want to get more infos about the the knitr Package klick here.

    【讨论】:

    • 这仍然不能解释 Markdown 与 Notebook 有何不同。 (我知道笔记本使用降价)但 R 降价存在于去年推出的 R 笔记本之前。那么 R notebook 中有哪些以前仅使用 R markdown 无法实现的新功能?
    • @PagMax 我认为区别在于从 Rmarkdown 文件呈现 html 输出的速度。当您想使用 knitr 生成 R Markdown 的 html 输出时,“编织”所有代码并生成输出需要一些时间。为了加快速度,您可以通过将输出更改为“html_notebook”来使用 Rstudio 中的 Rnotebook“模式”查看 html 中的 Rmarkdown,它可以让您执行重新运行块,然后执行 ctrl+shift+k (pc) 和html 刷新非常快。
    • 我认为 OP 遇到的问题是两者之间并没有太大的区别。我看到的主要区别是 RNB允许您独立和“在线”执行单个 R 代码块,而 RMD 要求您渲染或不渲染整个文件。想象一下,如果你有一个巨大的文件,只需要查看小图表。 RNB 对此有好处。 RMD 可能需要很长时间才能渲染,因此很不方便。
    • @BryanGoggin 你仍然可以在 Rmd 中执行独立的块。
    【解决方案5】:

    相似之处: R 笔记本和 R Markdown 文档非常相似。 Markdown 格式适用于两种文件类型。这两种文件格式都可用于与他人交流代码以及结果和评论。可以选择将创建的文档编织成 HTML、PDF 和 WORD 输出格式。如果代码中有错误,将不会生成输出。运行文件:CTRL+SHIFT+K 并插入代码块:CTRL+ALT+I。

    R Markdown 文档: Rmd 文档可以通过向导进行配置,并具有可复制文档、演示幻灯片、闪亮应用等选项以及从模板创建文档的选项。如果更改代码,输出将在 Rmd 输出中执行。它不提供预览文档的选项。 YAML 标头的输出格式为:输出:html_document

    R Notebook 文档: R nb 文档直接启动,没有向导(如 .RMD 的情况)出现。除了笔记本文件,还会生成一个扩展名为 *.nb.html 的附加 html 文件。笔记本有预览选项。如果任何代码被更改或编辑,则不会显示新的输出。输出显示在代码编辑器本身中。无论旧输出是什么,它都只会被渲染。代码更改不会生成新的输出。为了显示代码输出,我们需要执行块,然后它将出现在输出中。 YAML 标头的输出为: output: html_notebook

    YAML 标头 :如果我们将 YAML 标头从一个文件更改为另一个文件,它将改变文档的类型。例如,您有一个 R 笔记本,其 YAML 标头为 html_notebook。如果您更改 YAML 标头,您的 R 笔记本将转换为 R Markdown 文档。

    如果您必须选择一个,请使用 RMarkdown 文档,因为它提供了更多控制权,并在您编织后立即更新文档。

    【讨论】:

      【解决方案6】:

      这是我发现的一个实际区别:

      当你需要注释掉一部分文本时, RMarkdown 在文本的每一行插入#,而 RNotebook 巧妙地将文本封装在一对 <!-----> 符号之间(如在 html 文件中)

      有人可能会说,多么微不足道的区别。然而,正因为如此,我现在总是在 RStudio 中为我的所有文档使用 R Notebook(而不是 RMarkdown)。在其他所有方面,它们看起来都是一样的(至少满足我的需要,例如生成 html 和 pdf)

      否则,我的 cmets 突然变成了 header,如下所示:

      # This part is commented out, but will show as Heading 1 font text
      

      【讨论】:

      • R Markdown 也使用<!-- --> 来评论文本块。代码块仅使用# 注释。我RStudio的版本是1.3.1056。
      【解决方案7】:

      http://rmarkdown.rstudio.com/r_notebooks.html#notebook_file

      “普通的 R Markdown 文档是“编织”的,但笔记本是“预览的”。 虽然笔记本预览看起来类似于渲染的 R Markdown 文档,笔记本预览不会执行您的任何 R 代码 块”

      【讨论】:

      • 我同意。 “预览”功能是两者之间的唯一区别。我想知道当 Rnotebook 与 Rmarkdown 一样具有附加预览功能时,他们为什么要坚持使用 Rmarkdown。
      【解决方案8】:

      来自jrnold

      R 笔记本文件在编辑器中显示输出,同时隐藏控制台。 R markdown 文件在控制台内显示输出,而不在编辑器内显示输出。它们在 YAML 标头中的输出值不同。
      R 笔记本的 YAML 标头将包含以下行,

      ---
      ouptut: html_notebook
      ---
      

      R markdown 文件的 YAML 标头将包含一行,

      ouptut: html_document
      

      将 YAML 标头从 R 笔记本复制到 R markdown 文件会将其更改为 R markdown 文件,反之亦然。更具体地说,将 output 的值更改为 这是因为打开时的 RStudio IDE 和编织时的 rmarkdown 包使用文件的 YAML 标头,特别是 output 的值在 YAML 标头中键入,以确定它是什么类型的文档。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-10
        • 2019-02-12
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 2016-01-10
        相关资源
        最近更新 更多