R Markdown和R Notebook之间的区别
R Markdown和R Notebook之间的区别
我想要在高层次上理解R Markdown
和R NoteBook
之间的区别。我知道它们之间有关联,但我想弄清楚它们的关系。我的理解是:\n我知道R Notebooks实际上是R Markdown文档,但是我对术语感到困惑。\nRStudio的新文件选项既有R Markdown
,也有R NoteBook
,选择其中一个会打开一个R Markdown
文件,但有一些小的区别。所以我只是想弄清楚为什么会有两个选项,它们之间有什么区别?\n我知道R Notebooks是新推出的,而R Markdown已经存在一段时间了。部分困惑可能是因为在R Notebook推出之前我从未使用过R Markdown
,所以我相关或更具体的问题是:\nR NoteBook与仅使用R Markdown有什么不同,或者R NoteBook带来了哪些新功能?\n所有我在网络搜索中找到的结果都表明R Notebook使用R Markdown,但我没有找到关于两者具体区别的帮助。
问题的出现原因是R Markdown和R Notebook在环境和代码运行方式上存在差异。R Markdown在编译文档时会创建一个新的环境,并在其中运行所有代码。而R Notebook则直接使用全局环境来渲染HTML文件,每次保存.Rmd文件时都会更新HTML文件。预览按钮只是展示当前HTML文件的状态,并不运行任何代码。
这个差异导致了一些问题。例如,如果打开一个R Notebook的.Rmd文件,但没有运行任何代码块,那么HTML文件会正常渲染所有的标记和输入代码,但不会显示任何输出。又或者,假设在控制台中定义了变量x,但没有在代码块中定义。在R Notebook中使用变量x是没有问题的,预览HTML文件也没问题。然而,编译文档会生成一个“未知变量”错误,因为编译时会在新的环境中运行所有代码,而markdown文件中从未定义过变量x。
解决方法是在编写R Markdown时要注意这个差异,并根据需要选择合适的方式。如果希望在编译时运行所有代码并生成输出,可以使用Knit按钮。如果只是想查看HTML文件的渲染结果,可以使用预览按钮。另外,如果在R Notebook中需要使用控制台中定义的变量,可以直接使用,但在编译时可能会出现错误。为了避免这种错误,可以在代码块中明确地定义变量。
总之,了解和注意R Markdown和R Notebook之间的差异对于正确使用和理解这两种文档格式非常重要。
最近我发现这篇文章,让我对R Markdown和R Notebook的问题有了清楚的认识。文章中提到了以下几个相关的内容:
写一个R Notebook文档与写一个R Markdown文档没有什么不同。文本和代码块的语法与你在R Markdown教程中学到的一样。主要的区别在于R Notebook的互动性。在执行R Markdown文档中的代码块时,所有的代码会一次性发送到控制台,但是在R Notebook中,只发送一行代码。这样,如果某行代码发生错误,执行就会停止。
此外,在RStudio中创建R Notebook时,还有关于knit与preview的说明:
预览会显示编辑器内容的渲染HTML副本。因此,与Knit不同,Preview不会运行任何R代码块。相反,会显示编辑器中上次运行代码块的输出结果。
希望你觉得这些内容有用。
第二部分对于理解这两个工具的区别特别有帮助!
这个回答对我帮助最大。
R Markdown和R Notebook之间的区别是在渲染上。文件扩展名是相同的。当你创建一个新的R Notebook时,在头部的输出选项中会添加html_notebook
。这就是区别所在。你可以快速预览渲染结果,而不需要编译。它还会在每次保存时刷新预览。然而,在预览中你无法看到代码的输出(没有图形、没有表格...)(至少在我的设置中是这样的)。如果在输出选项中没有html_notebook
,就没有预览按钮。
如你所见,预览选项会显示出来,但你也可以编译成任何你想要的格式。它会在你这样做时将其添加到头部代码中。
然而,如果你的头部没有html_notebook
,你只能编译代码来看它的样子(整个Notebook)(请忽略我用图片添加的额外默认选项)。
并且预览选项不会显示在下拉菜单中。
否则它的工作方式是相同的。对于某些默认配置,输出在代码部分也是默认隐藏的。
请注意,你可以在头部混合几个输出选项,这样你就可以保留预览并保留导出的编译选项。
此外,Notebook存在一个与UTC相关的错误(考虑到重音和非英文字符)。它会搞乱你的输出和文件...所以最好还是使用Markdown...这个问题仍在解决中(据我所知)。
你的回答完全符合我几个月来的使用体验。难以理解的是,R Notebook是R Markdown的全部和更多。为什么还要继续使用R Markdown呢?你可以使用R Notebook并直接"编译"而不是"预览",就可以拥有R Markdown的功能!!
我认为这更多是一个遗留问题,为了不让已经使用R Markdown的人感到困惑。此外,目前的Notebook版本(或R)存在上述的错误,这阻止了我基本上无法使用它。根据我使用的方式(从R Markdown到Notebook或从Notebook到R Markdown),我的文本也会在源文件中被替换成无意义的内容。所以在我可以修复它之前,我还是坚持使用Markdown。特别是Notebook的预览对我来说没有那么有用,只是预览文本而没有图形等...但它有很大的潜力。
当你使用R Notebook时,你绝对可以在预览中看到所有的输出,图形(动态和静态),表格等...这个回答应该修改一下,删除说你看不到输出的说法。R Notebook在这方面要优越得多,因为它可以在不重新编译的情况下获得所有的输出,因为预览会记住你代码块的最后输出。它使你可以迭代地编写(这总是你所需要的)。