R MarkDown和R NoteBook之间的区别

时间:2017-05-06 12:30:09

标签: r rstudio knitr r-markdown rnotebook

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

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

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

enter image description here

我了解R笔记本是新推出的,R Markdown已经存在了一段时间。部分混淆可能是因为我在引入R Notebook之前从未使用R Markdown所以我的相关或更具体的问题是

R NoteBook的用途与仅仅使用R MarkDown或R NoteBook带来的新功能有什么不同?

我在网络搜索上的所有点击都指出R笔记本使用R Markdown但我没有找到任何帮助,两者之间有什么明显不同。

7 个答案:

答案 0 :(得分:28)

据我所知,从我的设置来看,没有编码差异。 不同之处在于渲染。文件扩展名是相同的。

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

enter image description here

正如您所见,预览选项会显示,但您也可以使用任何所需的格式进行编织。当你这样做时,它会将它添加到标题代码中。

enter image description here

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

enter image description here

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

enter image description here

否则它的工作方式相同。对于某些默认配置,默认情况下,输出也会隐藏在代码部分中。

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

答案 1 :(得分:20)

最近我发现这篇文章让我明白R Markdown vs. R Notebook问题。 http://uc-r.github.io/r_notebook

以下是一些相关的内容:

  

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

在RStudio中创建R笔记本时,还有针对编织与预览的对比:

  

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

希望你觉得它很有用。

答案 2 :(得分:4)

不同之处在于,在R Notebok中,您可以编写Markdown和R-code Chunks并直接执行它们并立即查看结果。它本身就是一种笔记本。

R Markdown可以在html,pdf或单词Document中创建漂亮的输出。结合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.

答案 3 :(得分:3)

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

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

答案 4 :(得分:2)

我找到了一个实际的区别:

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

有人可能会说,这是一个微不足道的差异。但是,正因为如此,我现在总是在RStudio中使用R Notebook(而不是RMarkdown)来获取所有文档。在其他一切方面,它们看起来都是一样的(至少根据我的需要,例如生成HTML和pdf&#39;)

否则,我的评论会突然变成标题,如下所示:

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

答案 5 :(得分:2)

从以上答案中看不出最重要的区别之一。

摘自Bookdown book第3.2.1.3节:

  

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

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

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

答案 6 :(得分:1)

来自jrnold

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

>>>>print(str2)
'learningpython'

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

>>>>print(str1)
learningpython

将YAML标头从R笔记本复制到R降价文件后,会将其更改为R降价文件,反之亦然。更具体地说,将--- ouptut: html_notebook --- 的值更改为这是因为打开时的RStudio IDE和编织时的 rmarkdown 包使用文件的YAML标头,尤其是{ {1}}键入YAML标头,以确定它是什么类型的文档。