R Markdown: Warum Ihr JETZT zu Quarto wechseln solltet

Von R Markdown zu Quarto

Zugegeben: Der Titel ist ein wenig provokativ. Wer über etablierte Projekte verfügt, in denen Markdown-Dokumente erstellt werden, muss nicht sofort alles über Bord werfen – der Code wird weiterhin funktionieren. Doch es gibt mehrere sehr gute Gründe, zu Quarto zu wechseln – besser jetzt als später. Doch zunächst etwas Hintergrund: Was haben Quarto und R Markdown gemeinsam, wo unterscheiden sie sich?

Quarto vs. R Markdown: Vom Ausgangspunkt zum finalen Dokument

Von Quarto (.qmd) zum finalen Bericht: Präsentation, Word, PDF, ...
Von Quarto (.qmd) zum finalen Bericht: Präsentation, Word, PDF, …

Die automatisierte Berichtserstellung aus R heraus, sei es mit R Markdown oder Quarto, umfasst mehrere Schritte. Der Ablauf vom „Roh-Dokument“ zum fertigen Bericht – je nach Wunsch eine Präsentation in einem von mehreren HTML-Formaten oder Powerpoint, ein PDF oder Word-Dokument – ist prinzipiell der gleiche. Neu ist lediglich das Dateiformat: Es beginnt mit dem Quarto-typischen .qmd anstatt dem bisher in R üblichen .Rmd. Wer in R arbeitet, wird in beiden Fällen im Hintergrund auf knitr zugreifen, das eine .md-Datei erstellt. (Wir sehen weiter unten, dass auch andere Engines an die Stelle von knitr treten können.) Diese wiederum wird pandoc übergeben, um das finale Dokument zu erstellen.

Quarto vs. R Markdown: Unterschiede

R Markdown basiert auf dem R-Paket rmarkdown von JJ Allaire, Yihui Xie und vielen anderen. D. h. es ist an R gebunden, es gibt keine direkte Verbindung zu anderen Markdown-Varianten.

Quarto dagegen ist eine eigenständige Software. Es gibt zwar ein R-Paket quarto, dieses ist jedoch optional und bildet lediglich eine Brücke zum Kommandozeilen-Interface, das Quarto im Kern ist (CLI, Command Line Interface). Quarto muss separat heruntergeladen und installiert werden. Anlaufpunkt ist die Quarto-Webseite. Da Quarto vom RStudio / Posit-Team entwickelt wurde und wird, dürfte es nicht überraschen, dass die Software sehr gut in die RStudio-Oberfläche eingebunden ist.

Warum von R Markdown zu Quarto wechseln?

Warum also wechseln? Aus meiner Sicht gibt es drei wesentliche Gründe:

  1. Quarto enthält „von Haus aus“ Leistungsmerkmale, die in R Markdown nur über Erweiterungspakete zur Verfügung stehen.
  2. Quarto ist per Design offen für verschiedene Programmiersprachen und für verschiedene Engines, d. h. Software-Bausteine, die Markdown verarbeiten.
  3. Es ist einfach, umzusteigen – in den meisten Fällen dürfte sich das früher oder später angesichts der klaren Vorteile auszahlen. Die Wechselkosten sind gering – da es sich um frei verfügbare Software handelt, geht es „nur“ um ein wenig Zeit.

Ein paar Details zu den Wechselgründen:

1. Quartos fest integrierte Leistungsmerkmale

In R Markdown benötigt man für verschiedene Aufgaben Erweiterungspakete, zum Beispiel:

  • bookdown, um Bücher aus R heraus zu schreiben
  • blogdown, um Blogs aus R heraus zu schreiben
  • distill für wissenschaftliche Publikationen
  • xaringan für Präsentationen (es gibt andere Präsentationsformate – mein Favorit wurde 2022 xaringan, das vor Quarto auch das präferierte Format von Yihui Xie war)
  • Um Querverweise zu verwenden, benötigte man ein bookdown-Format, wie z. B. htmldocument2 statt htmldocument

Es war spannend zu sehen, wie das RMarkdown-Ökosystem über wenige Jahre wuchs und immer mehr coole Anwendungen ermöglichte. Nachteil dieser Entwicklung war eine gewisse Uneinheitlichkeit.

Quarto bietet all diese Möglichkeiten „per se“, ohne auf Erweiterungen angewiesen zu sein. Auch wenn die Markdown-Landschaft von einem starken, professionellen Team mit langem Atem betreut wird, ist es gerade im Open-Source-Bereich immer eine gute Idee, Paket-Abhängigkeiten zu reduzieren.

2. Multiple Programmiersprachen, multiple Engines

Quarto unterstützt verschiedene Programmiersprachen und Engines.
Quelle: Nick Tierney, Notes on Changing from Rmarkdown/Bookdown to Quarto

Quarto bringt, anders als R Markdown, keine R-Abhängigkeit mit sich. Nach allem, was ich in der R Community darüber gelesen und gehört habe, ist die Wahrscheinlichkeit sehr hoch, dass Quarto zum neuen Standard wird – wenn das nicht sogar schon geschehen ist. Wer mit R arbeitet, wird mit gewisser Wahrscheinlichkeit früher oder später mit Kollegen oder Projektpartnern in Kontakt kommen, die mit anderen Programmiersprachen arbeiten. Quarto senkt die Hürde der Zusammenarbeit und kann einfacher von anderen Sprachen aus genutzt werden, ohne R. Auch RStudio ist keine Bedingung: Quarto unterstützt auch andere Code-Editoren (IDEs, Integrated Development Environments), z. B. JupyterLab, VS Code.

Aktuell unterstützte Programmiersprachen:

  • R
  • Python
  • Javascript
  • Julia

Zudem ist Quarto so offen konzipiert, dass es per Design auch mit Sprachen kooperieren kann, die es heute noch gar nicht gibt. In diesem Sinne ist es eine zukunftssicherere Wahl als R Markdown.

Aktuell unterstützte Engines:

  • knitr
  • Jupyter
  • Observable

3. Der Umstieg ist einfach

Die meisten Markdown-Dokumente und Jupyter-Notebooks sollten ohne Änderungen von Quarto gerendert werden. Je nach Ausgabeformat können jedoch Anpassungen erforderlich sein – etwa bei komplexeren Strukturen wie Blogs oder Büchern. Ein Vorteil des Umstiegs auf Quarto besteht in mehr Einheitlichkeit:

  • Einfacherer Wechsel zwischen Ausgabeformaten, z. B. von Buch zu Webseite oder Präsentationsfolien
  • YAML-Dateien: In Markdown z. B. _bookdown.yml, _output.yml;
    in Quarto: nur eine _quarto.yml
    YAML = Yet Another Markup Language:
    Auszeichnungssprache für Meta-Informationen, z. B. Titel, Autor, Datum, Institution; im YAML-Kopfbereich können auch Einstellungen vorgenommen werden wie z. B. ob Codeblöcke im finalen Dokument angezeigt werden sollen

Meine Erfahrungen bis jetzt

Erst 2022 überarbeitete ich Powerpoint-Material und übertrug es in RMarkdown / xaringan. Zuerst war ich nicht so glücklich, dass es nun schon wieder ein neues Format gibt. Jedoch ist der Wechsel von xaringan zu Quarto ein Kindergeburtstag im Vergleich zum Schritt von Powerpoint zu xaringan. Präsentationen werden nun von der Javascript-Bibliothek reveal.js unterstützt – bei xaringan war es remark.js.

Quarto bietet flexiblere Layouts. Beispiel: Zwei oder mehr Spalten. Zum Einstellen der Spaltenbreiten musste ich in xaringan die .css-Datei anpassen und eine css-Klasse bearbeiten oder erstellen. In Quarto mit revealjs genügt die Schreibweise mit den drei Doppelpunkten, um ein <div>-Tag anzulegen:

::: {.column width=“65%“}

Weiterer Vorteil von Quarto: Tabsets funktionieren gleichermaßen in verschiedenen html-Formaten. Allerdings sind sie ungünstig, wenn man – wie ich – eine HTML-Präsentation auch im PDF-Format weitergeben möchte. (Warum ich HTML für Präsentationen bevorzuge, erläutere ich in diesem Blogbeitrag.)

Zudem ist es in Quarto einfacher, globale Chunk-Optionen einzustellen. Kennen Sie die etwas umständliche, unintuitive Schreibweise in RMarkdown?

knitr::opts_chunk$set(echo = FALSE) besagt, dass Codeblöcke nicht angezeigt werden sollen.

In Quarto kann man dagegen im YAML-Header schreiben:

execute:
   echo:  false

Wer, etwa zu Unterrichtszwecken, Codeblöcke inklusive der Chunk-Optionen anzeigen möchte, kann in Quarto einfach schreiben:

echo: fenced

Weiteres Argument pro Quarto: Das RStudio/Posit-Team hat zwar versprochen, R Markdown und die damit verbundenen Formate und Pakete weiter zu betreuen. Dieses Versprechen schließt jedoch ausdrücklich nicht ein, dass neue Leistungsmerkmale parallel sowohl für RMarkdown als auch Quarto entwickelt werden. Auch in diesem Sinne ist Quarto also zukunftssicherer als RMarkdown.

Weitere Informationen

Zum Abschluss etwas Material, das mir bei diesem Artikel geholfen hat:

Viel Erfolg mit Euren R-Projekten!

P. S. Im R-Einführungskurs habe ich bereits das Markdown-Kapitel auf Quarto umgestellt. Der separate Workshop „Berichte erstellen mit R“ wird seltener gebucht – hier bin ich noch dran. Bei der nächsten Buchung wird er auf Quarto getrimmt sein.

Ein Gedanke zu „R Markdown: Warum Ihr JETZT zu Quarto wechseln solltet“

Freue mich über Kommentare!

Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.