R Markdown并没有消失。但是Quarto发布平台对Python、Julia和Observable JavaScript的友好程度不亚于对R的友好程度。
R Markdown一直是R生态系统中比较引人注目的一个方面,它使R代码的结果很容易纳入文本中。另外,R Markdown文件可以被导出到各种格式--Word、HTML、PDF、PowerPoint等等。你甚至可以导出完整的书籍和网站。
但是R Markdown已经存在了10年。随着更多的功能通过外部R包被添加,基本任务的语法变得不一致,这取决于,例如,输出是一个独立的HTML文档,HTML幻灯片演示,还是其他。此外,虽然你可以在R Markdown代码块中运行除R之外的其他语言,但从根本上说,它仍然是为R而建。
这就是RStudio开发Quarto的两个原因,这是一个类似于R Markdown的下一代发布系统。Quarto是开源的,它对Python、Julia、Observable JavaScript和Jupyter笔记本的友好程度不亚于对R的友好程度,它不是一个特定的语言库,而是一个外部软件应用。
经过几个月的试运行,Quarto是今年7月下旬RStudio会议的一个主要主题。
为什么要用Quarto呢?
如果你使用一种以上的语言,或者你在一个多语言团队中,你可能会发现Quarto对多语言的本地支持很有吸引力。高度的内部一致性 "是另一个吸引人的地方,因为同样的语法可以在更多的语言和格式中发挥作用。
"Openscapes的创始人兼联合董事Julia Stewart Lowndes在RStudio会议的主题演讲中说:"Quarto能够实现跨编码语言的协作。她说,Openscapes作为Quarto的早期测试者与美国国家航空航天局合作,发现Quarto使Python和R用户更容易一起工作。
但是最吸引人的好处之一是在未来的道路上。RStudio创始人兼首席执行官J.J. Allaire设想为Quarto文档提供基于云的协作,其工作方式与现在的Google Docs编辑方式相同--无缝,用户不需要明确使用Git等外部版本控制工具。然而,Allaire强调,这一功能并非迫在眉睫。
不过就目前而言,Quarto被设计成在Visual Studio Code和Jupyter中与在RStudio中同样好用,该公司希望这将使非R用户的团队更有可能采用。事实上,那些主要做文本工作而很少写代码的人可以使用纯文本编辑器来编辑Quarto文档;渲染好的HTML文档可以在浏览器中预览。
Allaire认为Quarto最大的优势之一是协助编写YAML,YAML是用于R Markdown和Quarto文档头信息的语言。YAML对于冒号、逗号和缩进的位置可以说是恼人的挑剔。它几乎就像自己的编程语言,但没有IDE和错误检查的优势。Quarto编辑器有内置的YAML帮助。它的目的是在你尝试渲染你的文档并发现它不能工作之前突出错误。
由于Quarto是开源的,其他人可以通过编写扩展程序来贡献其功能。Quarto开发团队已经提供了几个Quarto扩展。
另一个潜在的优势,取决于你的需求。你可以将Quarto文档导出为40多种不同的文件格式,包括Word、OpenOffice、PowerPoint、ePub、Jira Wiki、Jupyter、Observable JS、完整网站和电子书。R Markdown可以生成其中的一些,但不是全部。
还有一些有用的转换功能,比如在.ipynb Jupyter笔记本和.qmd Quarto文档之间进行转换,这些文档可以被任何文本编辑器读取。
最后,虽然R Markdown将被维护和更新,但"[RStudio]可能不会尝试将Quarto功能回传到R Markdown中(除非它相当直截了当,而且花费的精力很少),"RStudio工程师谢毅辉在一篇博文中写道。换句话说,很酷的新功能更有可能出现在Quarto中。
然而,Quarto并不意味着R Markdown的结束。"请放心,#rmarkdown是不会消失的。我们会继续努力!"。如果你不需要,不需要切换#rstats,"RStudio的软件工程师Christophe Dervieux在推特上说。事实上,你在R Markdown中知道的大多数东西可能都可以在Quarto中使用。而且,Quarto会渲染R Markdown文档。
Quarto与R Markdown有什么不同?
不像R Markdown是一个R软件包,Quarto是一个独立的、非R的应用程序。所以为了使用Quarto,你可能首先需要像其他软件一样下载和安装它,在这种情况下,你可以从quarto.org的 "开始 "页面下载和安装。Quarto目前包含在RStudio IDE v2022.07.1或更高版本的RStudio中。
对于Visual Studio Code,同时安装Quarto和VS Code Quarto扩展。Quarto也可用于Jupyter Lab和任何文本编辑器
如果你以前使用过R Markdown,Quarto文档看起来会很熟悉。有一个YAML标题,上面有标题、作者和输出格式。文本使用了很多通用的Markdown,比如标题使用磅符号,超链接文本使用括号/小括号语法:[linked text](https://theurl.com)
。两者都使用三个反斜线来划分代码块的开始和结束。
RStudio中的Quarto文档样本。
旧版R Markdown和Quarto之间最大的区别之一是你如何为代码块设置选项。在R Markdown中,代码块的特定选项通常放在定义代码块的大括号内,例如
```{r chunk_name, echo=FALSE, warning=FALSE}
code here
这创建了一个名为chunk_name的R代码块,它将被执行,但代码本身不会显示在渲染的文档中。而且代码可能产生的任何警告信息也不会出现。
在Quarto中,chunk选项位于大括号的下面。每个选项都在自己的行中,前面有一个英镑符号和垂直字符,比如说
{r}
#| label: chunk_name
#| echo: false
#| warning: false
这种 "哈希管 "的分块选项格式现在也适用于R Markdown文档。