Unterschied: Schaltfläche "PDF kompilieren" in RStudio vs. stricken () und stricken2pdf ()

TL; DR

Was sind die (möglicherweise unerwünschten) Nebenwirkungen vonknit()/knit2pdf() statt "PDF kompilieren"1 -Taste in RStudio?

Motivatio

Die meisten Benutzer vonknitr scheinen ihre Dokumente in RStudio zu schreiben und die Dokumente mit der Schaltfläche "PDF kompilieren" / "HTML stricken" zu kompilieren. Dies funktioniert die meiste Zeit reibungslos, aber manchmal gibt es spezielle Anforderungen, die mit der Schaltfläche zum Kompilieren nicht erreicht werden können. In diesen Fällen lautet die Lösung in der Regel "@"knit()/knit2pdf()/rmarkdown::render() (oder ähnliche Funktionen) direkt.

Einige Beispiele

Wie kann ich einen anderen Dateinamen wählen? Gibt es eine Möglichkeit, Markdown mit RStudio direkt aus Ihrem Arbeitsbereich zu entfernen?Datum in Dateiname einfügen, während das Dokument mit der RStudio-Stricktaste gestrickt wird

Usingknit2pdf() anstelle der Schaltfläche "PDF kompilieren" bietet in der Regel eine einfache Lösung für solche Fragen. Dies hat jedoch einen Preis: Es gibt den grundlegenden Unterschied, dass "PDF kompilieren" das Dokument verarbeitetn einem separaten Prozess und einer separaten Umgebu wohingegenknit2pdf() und Freunde nicht.

Dies hat Auswirkungen und das Problem ist, dass nicht alle dieser Auswirkungen offensichtlich sind. Nehmen Sie die Tatsache, dassknit() verwendet als Beispiel Objekte aus der globalen Umgebung (während "PDF kompilieren" dies nicht tut). Dies mag offensichtlich sein und das gewünschte Verhalten in Fällen wie dem zweiten obigen Beispiel, aber es ist ein unerwartete Folge wannknit() wird verwendet, um Probleme wie in Beispiel 1 und 3 zu überwinden.

Mehr gibt es subtilere Unterschiede:

Dasworking directory ist möglicherweise nicht wie erwartet eingestellt.Pakete müssen geladen werden.Einige Optionen, die normalerweise von RStudio festgelegt werden, haben möglicherweise unerwartete Werte.ie Frage und ihr Zi

Wenn ich den Rat zur Verwendung von @ lese / schreiknit2pdf() anstelle von "PDF kompilieren", denke ich "richtig, aber der Benutzer sollte die Konsequenzen verstehen ...".

Daher ist die Frage hier:

Was sind die (möglicherweise unerwünschten) Nebenwirkungen vonknit()/knit2pdf() anstelle der Schaltfläche "PDF kompilieren" in RStudio?

Wenn es eine umfassende (Community-Wiki?) Antwort auf diese Frage gab, könnte sie in zukünftigen Antworten verlinkt werden, die die Verwendung von @ vorschlageknit2pdf().

Verwandte Fragen

Es gibt Dutzende von Fragen zu diesem Thema. Sie schlagen jedoch entweder nur Code vor, um das Verhalten der RStudio-Schaltfläche (mehr oder weniger) zu reproduzieren, oder sie erklären, was "im Grunde" passiert, ohne die möglichen Fallstricke zu erwähnen. Andere scheinen sehr ähnliche Fragen zu sein, erweisen sich jedoch als (sehr) besonderer Fall. Einige Beispiele

Knit2html repliziert nicht die Funktionalität der Knit HTML-Schaltfläche in R Studio: Caching-Problem.HTML-Ausgaben unterscheiden sich zwischen der Verwendung von knitr in Rstudio und knit2html in der Befehlszeile: Abschriftenversionen.Wie konvertiere ich R Markdown nach HTML? D. h., Was macht "Knit HTML" in Rstudio 0.96?: Ziemlich oberflächliche Antwort von Yihui (erklärt, was "im Grunde" passiert) und einige Optionen, wie das Verhalten der RStudio-Schaltfläche reproduziert werden kann. Weder dasempfohle Sys.sleep(30) Nochdas "PDF kompilieren" -Protokoll sind aufschlussreich (beide Hinweise verweisen auf dasselbe).Was macht „HTML stricken“ in Rstudio 0.98?: Verhalten der Schaltfläche reproduzieren.Über die Antwort

Ich denke, diese Frage hat viele Fragen aufgeworfen, die Teil einer Antwort sein sollten. Es kann jedoch noch viele weitere Aspekte geben, von denen ich nicht weiß, weshalb ich diese Frage nicht gerne selbst beantworte (obwohl ich es möglicherweise versuche, wenn niemand antwortet).

Wahrscheinlich sollte eine Antwort drei Hauptpunkte abdecken:

Die neue Sitzung im Vergleich zur aktuellen Sitzung (globale Optionen, Arbeitsverzeichnis, geladene Pakete usw.).ine Konsequenz des ersten Punktes: Die Tatsache, dassknit() verwendet Objekte aus der aufrufenden Umgebung (Standard:envir = parent.frame()) und Auswirkungen auf die Reproduzierbarkeit. Ich habe versucht, das Problem der Verhinderung von @ anzugehknit() von der Verwendung von Objekten außerhalb des Dokuments indiese Antwort (zweiter Aufzählungspunkt).Things RStudio macht heimlich ...… Beim Starten einer interaktiven Sitzung Beispie) -> Nicht verfügbar, wenn "PDF kompilieren" angeklickt wird… Wenn Sie auf "PDF kompilieren" klicken (etwas Besonderes außer der neuen Sitzung, in der das Arbeitsverzeichnis auf die verarbeitete Datei eingestellt ist?)

Ich bin mir nicht sicher, aus welcher Perspektive ich das Problem sehe. Ich denke sowohl "Was passiert, wenn ich auf" PDF kompilieren "+ Implikationen klicke" als auch "Was passiert, wenn ich @ benutze"knit() + Implikationen "ist ein guter Ansatz, um die Frage anzugehen.

1 Gleiches gilt für die Schaltfläche "HTML stricken" beim Schreiben von RMD-Dokumenten.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage