> 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/nl/meer-onderwerpen/29-knitr.md).

# Knitr

Zoals op Wikipedia wordt vermeld, [Knitr is een engine voor dynamische rapportgeneratie met R](https://en.wikipedia.org/wiki/Knitr), een programmeertaal gericht op statistiek. Dit artikel legt uit hoe je R-code aan je LaTeX-document toevoegt om dynamische uitvoer te genereren.

In een standaard LaTeX-distributie moet R in je besturingssysteem zijn ingesteld en moet je enkele speciale commando's uitvoeren om het te compileren. Overleaf kan je die moeite besparen, **knitr** werkt direct zonder extra instellingen.

## Inleiding

Documenten die R-code bevatten, moeten worden opgeslagen met de extensie `.Rtex` of `.Rnw`, anders werkt de code niet. Laten we een voorbeeld bekijken:

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

Je kunt R-commando's typen in je \LaTeX{}-document; deze worden verwerkt en hun uitvoer wordt in het document opgenomen:

<<>>=
# Maak een reeks getallen
X = 2:10

# Geef basisstatistische maten weer
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/666a70ca563b37e44a362abcbff087e36c93a8ef)

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

Zoals je ziet, is de tekst tussen de tekens `<<>>=` en `@` is R-code; deze code en de uitvoer ervan worden afgedrukt in een op een lijst lijkende opmaak. Deze codechunk kan enkele extra parameters krijgen om de dynamische uitvoer aan te passen. Zie de volgende sectie.

## Codechunks

Een codeblok zoals het in de vorige sectie getoonde wordt meestal een *chunk*genoemd. Je kunt enkele extra opties instellen in knitr-chunks. Zie het voorbeeld hieronder:

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

Je kunt R-commando's typen in je \LaTeX{}-document; deze worden verwerkt en hun uitvoer wordt in het document opgenomen:

<<echo=FALSE, cache=TRUE>>=
# Maak een reeks getallen
X = 2:10

# Geef basisstatistische maten weer
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/2f67f0f5554e64ab21a9f6961b102f0d3877c5e7)

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

Er zijn drie extra opties die binnen `<<` en `>>`.

**echo=FALSE**

Dit verbergt de code en geeft alleen de door R gegenereerde uitvoer weer.

**cache=TRUE**

Als cache op true staat, wordt de chunk niet uitgevoerd, alleen de objecten die ermee zijn gegenereerd. Dit bespaart tijd als de gegevens in die chunk niet zijn veranderd. Merk op dat de optie cache=TRUE momenteel niet wordt ondersteund in Overleaf, maar lokaal zou het moeten werken.

Zie de [naslaggids](#reference-guide) voor meer opties.

## Inline-commando's

Het is mogelijk om toegang te krijgen tot objecten die in een chunk zijn gegenereerd en ze inline af te drukken.

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

Je kunt R-commando's typen in je \LaTeX{}-document; deze worden verwerkt en hun uitvoer wordt in het document opgenomen:

<<echo=FALSE, cache=TRUE>>=
# Maak een reeks getallen
X = 2:10

# Geef basisstatistische maten weer
summary(X)

@

Dus het gemiddelde van de gegevens is $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/a69914f7327fa870a59ee4a9e012b2fa419945cf)

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

Het commando `\Sexpr{mean(X)}` geeft de uitvoer weer die door de R-code wordt geretourneerd `mean(X)`. Binnen de accolades kan elk R-commando worden meegegeven.

## Grafieken

Grafieken kunnen ook worden toegevoegd aan een **knitr** document. Zie het volgende voorbeeld

```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")

@

Figuur \ref{fig:plot1} is een eenvoudig histogram.

\end{document}
```

![KnitrDemo4.png](/files/2a0ece93e3ef12dcf4b66df2cfaed1a11b13a7c7)

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

Dit histogram gebruikt gegevens die zijn opgeslagen in "data.txt", opgeslagen in de huidige werkmap. Enkele opties met betrekking tot de figuur worden aan de chunk doorgegeven.

**plot1**

Dit is het label dat wordt gebruikt om naar de grafiek te verwijzen. Het voorvoegsel "fig:" is verplicht. Je ziet in het voorbeeld dat naar de figuur wordt verwezen met \ref{fig:plot1}.

**fig.pos="t"**

Positioneringsparameter. Deze is dezelfde als die gebruikt in de figure-omgeving.

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

Breedte en hoogte van de figuur.

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

Bijschrift voor de figuur.

## Externe R-scripts

Je kunt delen van een extern R-script importeren in een **knitr** document. Dit is erg handig, omdat het vrij gebruikelijk is om het script in een extern programma te schrijven en te debuggen voordat je het in je document opneemt.

Stel dat we de volgende R-code hebben in een bestand genaamd `mycode.R` dat we opnemen in ons LaTeX-document:

```latex
## ---- myrcode1
# Maak een reeks getallen
 X = 2:10

## ---- myrcode2
# Geef basisstatistische maten weer
summary(X)
```

Merk de regels op

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

en

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

Deze markeren het begin van een codechunk en zijn verplicht als je dit script in ons document wilt gebruiken, zoals in het volgende codefragment wordt getoond:

```latex
De onderstaande chunk wordt niet afgedrukt

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

De code moet hier verschijnen

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/45744e3897c382158ea14b765d7fe956bc5925ba)

De eerste chunk wordt niet afgedrukt en wordt alleen gebruikt om het script te importeren met het commando `read_chunk("mycode.R")`, daarom is de optie `echo=FALSE` ingesteld. Ook mogen scripts niet worden gecachet. Zodra het script is geïmporteerd, kun je een chunk afdrukken met het label dat je hebt ingesteld na `## ----`. In dit geval is het `myrcode2`.

We hebben alle codefragmenten van het artikel in een project geplaatst dat  [je op Overleaf kunt openen](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=) .

## Naslaggids

**Enkele chunkopties**

* `resultaten`. Verandert het gedrag van de resultaten die door de R-code worden gegenereerd; mogelijke waarden zijn
  * `opmaak` Gebruik LaTeX om de uitvoer op te maken.
  * `ongewijzigd` Drukt de ruwe resultaten van R af.
  * `vasthouden` Houdt de uitvoerresultaten vast en plaatst ze aan het einde van de chunk.
  * `verbergen` Verberg de resultaten.
* `echo`. Of de R-broncode moet worden opgenomen. Kan andere parameters aannemen, `echo=2:3` drukt alleen de tweede en derde regel af; `echo=-2:-3` sluit alleen de tweede en derde regels uit.
* `cache`. Of de codechunk moet worden gecachet. Mogelijke waarden zijn `TRUE` en `FALSE`
* `highlight`. Of de broncode gemarkeerd moet worden. Mogelijke waarden zijn `TRUE` en `FALSE`
* `achtergrond`. Achtergrondkleur van de chunk; rgb- en HTML-formaten kunnen worden gebruikt, de standaardwaarde is *"#F7F7F7"*.

## Verder lezen

Zie voor meer informatie

* [Codeaccentuering met minted](/latex/nl/opmaak/12-code-highlighting-with-minted.md)
* [Kleuren gebruiken in LaTeX](/latex/nl/opmaak/13-using-colors-in-latex.md)
* [grafieken in LaTeX](/latex/nl/vakspecifiek/08-pgfplots-package.md)
* [Afbeeldingen invoegen](/latex/nl/meer-onderwerpen/27-inserting-images.md)
* [Tabellen](/latex/nl/afbeeldingen-en-tabellen/01-tables.md)
* [Afbeeldingen en tabellen positioneren](/latex/nl/afbeeldingen-en-tabellen/02-positioning-images-and-tables.md)
* [TikZ-pakket](/latex/nl/afbeeldingen-en-tabellen/05-tikz-package.md)
* [Wiskundige uitdrukkingen](/latex/nl/wiskunde/01-mathematical-expressions.md)
* [het **knitr** webpagina](http://yihui.name/knitr/)
* [het **knitr** pakkethandleiding](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/nl/meer-onderwerpen/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.
