Overleaf bietet eine Integration mit knitr, mit der Sie R-Code in Ihr LaTeX-Dokument einfügen können, um eine dynamische Ausgabe zu erzeugen.Dokumente, die R-Code enthalten, müssen mit der Endung .Rtex oder .Rnw gespeichert werden, da der Code sonst nicht funktioniert. Sehen wir uns ein Beispiel an:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
Dieses knitr-Beispiel in Overleaf öffnenWie Sie sehen, ist der Text zwischen den Zeichen <<>>= und @ R-Code. Dieser Code und seine Ausgabe werden in einem listingähnlichen Format ausgegeben. Diesem Codeabschnitt können zusätzliche Parameter übergeben werden, um die dynamische Ausgabe anzupassen, wie im nächsten Abschnitt beschrieben.
Ein Codeblock wie der im vorherigen Abschnitt gezeigte wird üblicherweise als Chunk bezeichnet. Sie können in knitr-Chunks einige zusätzliche Optionen festlegen. Sehen Sie sich das folgende Beispiel an:
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@\end{document}
echo=FALSE Blendet den Code aus und gibt nur die von R erzeugte Ausgabe aus.
cache=TRUE Wenn cache auf true gesetzt ist, wird der Chunk nicht ausgeführt, sondern nur die von ihm erzeugten Objekte verwendet. Das spart Zeit, wenn sich die Daten in diesem Chunk nicht geändert haben.
Beachten Sie, dass die Option cache=TRUE in Overleaf derzeit nicht unterstützt wird, lokal jedoch funktionieren sollte.
Es ist möglich, auf in einem Chunk erzeugte Objekte zuzugreifen und sie im Fließtext auszugeben.
\documentclass{article}\begin{document}You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:<<echo=FALSE, cache=TRUE>>=# Create a sequence of numbersX = 2:10# Display basic statistical measuressummary(X)@So, the mean of the data is $\Sexpr{mean(X)}$\end{document}
Dieses knitr-Beispiel in Overleaf öffnenDer Befehl \Sexpr{mean(X)} gibt die Ausgabe des R-Codes mean(X) aus. Innerhalb der geschweiften Klammern kann ein beliebiger R-Befehl übergeben werden.
Dieses knitr-Beispiel in Overleaf öffnenDieses Histogramm verwendet Daten aus „data.txt“, das im aktuellen Arbeitsverzeichnis gespeichert ist. Dem Chunk werden einige abbildungsbezogene Optionen übergeben.plot1 Dies ist das Label, mit dem auf das Diagramm verwiesen wird. Das Präfix „fig:“ ist obligatorisch. Im Beispiel sehen Sie, dass mit \ref{fig:plot1} auf die Abbildung verwiesen wird. fig.pos="t" Positionierungsparameter. Dieser entspricht dem in der figure-Umgebung verwendeten. fig.height=4, fig.width=4 Breite und Höhe der Abbildung. fig.cap="First plot" Beschriftung der Abbildung.
Sie können Teile eines externen R-Skripts in ein knitr-Dokument importieren. Das ist sehr hilfreich, da es durchaus üblich ist, das Skript in einem externen Programm zu schreiben und zu debuggen, bevor man es in das Dokument einbindet.Angenommen, wir haben den folgenden R-Code in einer Datei namens mycode.R, die wir in unser LaTeX-Dokument einbinden:
## ---- myrcode1# Create a sequence of numbers X = 2:10## ---- myrcode2# Display basic statistical measuressummary(X)
Beachten Sie die Zeilen:
## ---- myrcode1
und
## ---- myrcode2
Diese markieren den Beginn eines Code-Chunks und sind erforderlich, wenn Sie dieses Skript in Ihrem Dokument verwenden möchten, wie im folgenden Codefragment gezeigt:
The chunk below will not be printed<<echo=FALSE, cache=FALSE>>=read_chunk("mycode.R")@The code must show up here<<myrcode2>>=@
Der erste Chunk wird nicht ausgegeben und dient nur dazu, das Skript mit dem Befehl read_chunk("mycode.R") zu importieren. Deshalb ist die Option echo=FALSE gesetzt. Außerdem dürfen Skripte nicht gecacht werden. Sobald das Skript importiert ist, können Sie einen Chunk über das Label ausgeben, das Sie nach ## ---- festgelegt haben. In diesem Fall ist es myrcode2.Wir haben alle Codefragmente dieses Artikels in einem Projekt zusammengefasst, das Sie in Overleaf öffnen können.