> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/de/weitere-themen/29-knitr.md).

# Knitr

Wie auf Wikipedia vermerkt, [Knitr ist eine Engine zur dynamischen Berichtserstellung mit R](https://en.wikipedia.org/wiki/Knitr), einer Programmiersprache mit Schwerpunkt Statistik. Dieser Artikel erklärt, wie man R-Code zu Ihrem LaTeX-Dokument hinzufügt, um eine dynamische Ausgabe zu erzeugen.

In einer standardmäßigen LaTeX-Distribution müssen R in Ihrem Betriebssystem eingerichtet und einige spezielle Befehle ausgeführt werden, um es zu kompilieren. Overleaf kann Ihnen diese Mühe ersparen, **knitr** funktioniert sofort.

## Einleitung

Dokumente, die R-Code enthalten, müssen mit der Erweiterung `.Rtex` oder `.Rnw`, gespeichert werden, andernfalls funktioniert der Code nicht. Sehen wir uns ein Beispiel an:

```latex
\documentclass{article}
\begin{document}

Sie können R-Befehle in Ihr \LaTeX{}-Dokument eingeben, die verarbeitet werden und deren Ausgabe in das Dokument eingefügt wird:

<<>>=
# Erstelle eine Zahlenfolge
X = 2:10

# Zeige grundlegende statistische Kennwerte
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/ee4735c116f5da2ca4f440cb94388b0615358fc6)

&#x20;[Öffnen Sie dieses `knitr` Beispiel auf Overleaf](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Wie Sie sehen, ist der Text zwischen den Zeichen `<<>>=` und `@` ist R-Code; dieser Code und seine Ausgabe werden in einem listenähnlichen Format ausgegeben. Dieser Code-Abschnitt kann einige zusätzliche Parameter erhalten, um die dynamische Ausgabe anzupassen. Siehe den nächsten Abschnitt.

## Code-Abschnitte

Ein Codeblock wie der im vorherigen Abschnitt vorgestellte wird normalerweise als *Chunk*. Sie können in knitr-Chunks einige zusätzliche Optionen festlegen. Siehe das folgende Beispiel:

```latex
\documentclass{article}
\begin{document}

Sie können R-Befehle in Ihr \LaTeX{}-Dokument eingeben, die verarbeitet werden und deren Ausgabe in das Dokument eingefügt wird:

<<echo=FALSE, cache=TRUE>>=
# Erstelle eine Zahlenfolge
X = 2:10

# Zeige grundlegende statistische Kennwerte
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/b91f1947c49c29edf34c9b28d2ab3d65af93c3c5)

&#x20;[Öffnen Sie dieses `knitr` Beispiel auf Overleaf](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Es werden drei zusätzliche Optionen innerhalb von `<<` und `>>`.

**echo=FALSE**

Dies 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. Das spart Zeit, wenn sich die Daten in diesem Chunk nicht geändert haben. Beachten Sie, dass die Option cache=TRUE derzeit in Overleaf nicht unterstützt wird, sie lokal aber funktionieren sollte.

Siehe die [Referenzleitfaden](#reference-guide) für weitere Optionen.

## Inline-Befehle

Es ist möglich, in einem Chunk erzeugte Objekte abzurufen und inline auszugeben.

```latex
\documentclass{article}
\begin{document}

Sie können R-Befehle in Ihr \LaTeX{}-Dokument eingeben, die verarbeitet werden und deren Ausgabe in das Dokument eingefügt wird:

<<echo=FALSE, cache=TRUE>>=
# Erstelle eine Zahlenfolge
X = 2:10

# Zeige grundlegende statistische Kennwerte
summary(X)

@

Also beträgt der Mittelwert der Daten $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/6ba0e872ad55678f1bc6a2c6d36d70f8bb05d910)

&#x20;[Öffnen Sie dieses `knitr` Beispiel auf Overleaf](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Der Befehl `\Sexpr{mean(X)}` gibt die von dem R-Code zurückgegebene Ausgabe aus `mean(X)`. In den geschweiften Klammern kann jeder beliebige R-Befehl übergeben werden.

## Plots

Grafiken können auch zu einem **knitr** Dokument hinzugefügt werden. Siehe das nächste Beispiel

```latex
\documentclass{article}
\begin{document}

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="First plot">>=

xdata = read.csv(file="data.txt", head=TRUE,sep=" ")

hist(xdata$data, main="Overleaf histogram", xlab="Data")

@

Die Abbildung \ref{fig:plot1} ist ein einfaches Histogramm.

\end{document}
```

![KnitrDemo4.png](/files/d4d7de61f1da7fcc73548cf06a79c731dce6b526)

&#x20;[Öffnen Sie dieses `knitr` Beispiel auf Overleaf](https://www.overleaf.com/project/new/template/20427?id=69890965\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Dieses Histogramm verwendet Daten, die in "data.txt" gespeichert sind und sich im aktuellen Arbeitsverzeichnis befinden. Dem Chunk werden einige abbildungsbezogene Optionen übergeben.

**plot1**

Dies ist das Label, das zur Referenzierung des Plots verwendet wird. Das Präfix "fig:" ist zwingend erforderlich. Im Beispiel sehen Sie, dass auf die Abbildung mit \ref{fig:plot1} verwiesen wird.

**fig.pos="t"**

Positionierungsparameter. Derselbe wird in der Abbildungsumgebung verwendet.

**fig.height=4, fig.width=4**

Breite und Höhe der Abbildung.

**fig.cap="First plot"**

Beschriftung der Abbildung.

## Externe R-Skripte

Sie können Teile eines externen R-Skripts in ein **knitr** Dokument importieren. Das ist sehr hilfreich, da es recht üblich ist, das Skript vor dem Einfügen in Ihr Dokument in einem externen Programm zu schreiben und zu debuggen.

Angenommen, wir haben den folgenden R-Code in einer Datei namens `mycode.R` die wir in unser LaTeX-Dokument einbinden:

```latex
## ---- myrcode1
# Erstelle eine Zahlenfolge
 X = 2:10

## ---- myrcode2
# Zeige grundlegende statistische Kennwerte
summary(X)
```

Beachten Sie die Zeilen

```latex
## ---- myrcode1
```

und

```latex
## ---- myrcode2
```

Diese markieren den Beginn eines Code-Chunks und sind zwingend erforderlich, wenn Sie dieses Skript in unserem Dokument verwenden möchten, wie im folgenden Codeausschnitt gezeigt:

```latex
Der folgende Chunk wird nicht ausgegeben

<<echo=FALSE, cache=FALSE>>=
read_chunk("mycode.R")
@

Der Code muss hier erscheinen

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/bf20859772c83afcf11b72c36db50ecdb47138b1)

Der erste Chunk wird nicht ausgegeben; er wird nur verwendet, um das Skript mit dem Befehl zu importieren `read_chunk("mycode.R")`, 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 mit dem Label ausgeben, das Sie nach `## ----`festgelegt haben. In diesem Fall ist es `myrcode2`.

Wir haben alle Codefragmente des Artikels in ein Projekt gestellt, das  [Sie auf Overleaf öffnen können](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=) .

## Referenzleitfaden

**Einige Chunk-Optionen**

* `Ergebnisse`. Ändert das Verhalten der von dem R-Code erzeugten Ergebnisse; mögliche Werte sind
  * `markup` Verwendet LaTeX zur Formatierung der Ausgabe.
  * `asis` Gibt rohe Ergebnisse aus R aus.
  * `hold` Hält die Ausgaberesultate zurück und gibt sie erst am Ende des Chunks aus.
  * `hide` Ergebnisse ausblenden.
* `echo`. Ob der R-Quellcode einbezogen werden soll. Kann andere Parameter annehmen, `echo=2:3` gibt nur die zweite und dritte Zeile aus; `echo=-2:-3` schließt nur die zweite und dritte Zeile aus.
* `cache`. Ob der Code-Chunk gecacht werden soll. Mögliche Werte sind `TRUE` und `FALSE`
* `highlight`. Ob der Quellcode hervorgehoben werden soll. Mögliche Werte sind `TRUE` und `FALSE`
* `background`. Hintergrundfarbe des Chunks; es können rgb- und HTML-Formate verwendet werden, der Standardwert ist *"#F7F7F7"*.

## Weiterführende Literatur

Weitere Informationen finden Sie unter

* [Code-Hervorhebung mit minted](/latex/de/formatierung/12-code-highlighting-with-minted.md)
* [Farben in LaTeX verwenden](/latex/de/formatierung/13-using-colors-in-latex.md)
* [Grafiken in LaTeX](/latex/de/fachspezifisch/08-pgfplots-package.md)
* [Bilder einfügen](/latex/de/weitere-themen/27-inserting-images.md)
* [Tabellen](/latex/de/abbildungen-und-tabellen/01-tables.md)
* [Positionierung von Bildern und Tabellen](/latex/de/abbildungen-und-tabellen/02-positioning-images-and-tables.md)
* [TikZ-Paket](/latex/de/abbildungen-und-tabellen/05-tikz-package.md)
* [Mathematische Ausdrücke](/latex/de/mathematik/01-mathematical-expressions.md)
* [dem **knitr** Webseite](http://yihui.name/knitr/)
* [dem **knitr** Handbuch des Pakets](https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/de/weitere-themen/29-knitr.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
