> 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/da/flere-emner/29-knitr.md).

# Knitr

Som bemærket på Wikipedia, [Knitr er en motor til dynamisk rapportgenerering med R](https://en.wikipedia.org/wiki/Knitr), et programmeringssprog med fokus på statistik. Denne artikel forklarer, hvordan du tilføjer R-kode til dit LaTeX-dokument for at generere et dynamisk output.

I en standard-LaTeX-distribution skal du have R sat op i dit operativsystem og køre nogle særlige kommandoer for at kompilere det. Overleaf kan spare dig for besværet, **knitr** virker med det samme.

## Introduktion

Dokumenter, der indeholder R-kode, skal gemmes med filendelsen `.Rtex` eller `.Rnw`, ellers vil koden ikke virke. Lad os se et eksempel:

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

Du kan skrive R-kommandoer i dit \LaTeX{}-dokument, som vil blive behandlet, og deres output vil blive inkluderet i dokumentet:

<<>>=
# Opret en sekvens af tal
X = 2:10

# Vis grundlæggende statistiske mål
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/844aa34d956cddbfffd1a56bca1e76ef22a22e2c)

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

Som du kan se, er teksten mellem tegnene `<<>>=` og `@` er R-kode; denne kode og dens output udskrives i et liste-lignende format. Denne kodeblok kan få nogle ekstra parametre til at tilpasse det dynamiske output. Se næste afsnit.

## Kodeblokke

En kodeblok som den, der blev præsenteret i det foregående afsnit, kaldes normalt en *kodeblok*. Du kan angive nogle ekstra indstillinger i knitr-kodeblokke. Se eksemplet nedenfor:

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

Du kan skrive R-kommandoer i dit \LaTeX{}-dokument, som vil blive behandlet, og deres output vil blive inkluderet i dokumentet:

<<echo=FALSE, cache=TRUE>>=
# Opret en sekvens af tal
X = 2:10

# Vis grundlæggende statistiske mål
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/388557e5bd6d2c12051788ce7cede1cd2cf5fe83)

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

Der er tre yderligere indstillinger, der sendes ind i `<<` og `>>`.

**echo=FALSE**

Dette skjuler koden og udskriver kun det output, der genereres af R.

**cache=TRUE**

Hvis cache er sat til true, køres kodeblokken ikke, kun de objekter, den genererer. Dette sparer tid, hvis dataene i den kodeblok ikke har ændret sig. Bemærk, at indstillingen cache=TRUE i øjeblikket ikke understøttes i Overleaf, men den burde virke lokalt.

Se [referenceguiden](#reference-guide) for flere indstillinger.

## Inline-kommandoer

Det er muligt at få adgang til objekter, der er genereret i en kodeblok, og udskrive dem inline.

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

Du kan skrive R-kommandoer i dit \LaTeX{}-dokument, som vil blive behandlet, og deres output vil blive inkluderet i dokumentet:

<<echo=FALSE, cache=TRUE>>=
# Opret en sekvens af tal
X = 2:10

# Vis grundlæggende statistiske mål
summary(X)

@

Så middelværdien af dataene er $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/2cde03211023d525ea3391a0313e6857bcba2785)

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

Kommandoen `\Sexpr{mean(X)}` udskriver det output, der returneres af R-koden `mean(X)`. Inden for klammerne kan enhver R-kommando indsættes.

## Grafer

Grafer kan også tilføjes til et **knitr** dokument. Se næste eksempel

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

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="Første plot">>=

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

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

@

Figuren \ref{fig:plot1} er et simpelt histogram.

\end{document}
```

![KnitrDemo4.png](/files/364901d26296c4aa8d461406285646e90c36d9e1)

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

Dette histogram bruger data, der er gemt i "data.txt", som er gemt i den aktuelle arbejdsmappe. Et par figurrelaterede indstillinger sendes til kodeblokken.

**plot1**

Dette er den etiket, der bruges til at referere til figuren. Præfikset "fig:" er obligatorisk. Du kan se i eksemplet, at figuren refereres med \ref{fig:plot1}.

**fig.pos="t"**

Placeringsparameter. Dette er den samme, som bruges i figure-omgivelserne.

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

Figurens bredde og højde.

**fig.cap="Første plot"**

Billedtekst til figuren.

## Eksterne R-scripts

Du kan importere dele af et eksternt R-script ind i et **knitr** dokument. Dette er meget nyttigt, da det er ret almindeligt at skrive og fejlfinde scriptet i et eksternt program, før det inkluderes i dit dokument.

Antag, at vi har følgende R-kode i en fil kaldet `mycode.R` som vi inkluderer i vores LaTeX-dokument:

```latex
## ---- myrcode1
# Opret en sekvens af tal
 X = 2:10

## ---- myrcode2
# Vis grundlæggende statistiske mål
summary(X)
```

Bemærk linjerne

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

og

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

Disse markerer begyndelsen på en kodeblok og er obligatoriske, hvis du vil bruge dette script i vores dokument, som vist i følgende kodefragment:

```latex
Kodeblokken nedenfor vil ikke blive udskrevet

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

Koden skal vises her

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/9f2cb100e11f2efa30b776d945cde7ef45d9ae8e)

Den første kodeblok udskrives ikke, den bruges kun til at importere scriptet med kommandoen `read_chunk("mycode.R")`, derfor er indstillingen `echo=FALSE` er sat. Også scripts må ikke caches. Når scriptet er importeret, kan du udskrive en kodeblok ved hjælp af etiketten, du satte efter `## ----`. I dette tilfælde er det `myrcode2`.

Vi har lagt alle artiklens kodefragmenter i et projekt, som  [du kan åbne på Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=) .

## Referenceguide

**Nogle kodeblokindstillinger**

* `resultater`. Ændrer opførselen af de resultater, der genereres af R-koden, mulige værdier er
  * `markup` Brug LaTeX til at formatere outputtet.
  * `asis` Udskriver rå resultater fra R.
  * `hold` Holder outputresultaterne og udskriver dem ved slutningen af kodeblokken.
  * `skjul` Skjul resultater.
* `echo`. Hvorvidt R-kildekoden skal inkluderes. Kan tage andre parametre, `echo=2:3` udskriver kun den anden og tredje linje; `echo=-2:-3` udelader kun den anden og tredje linje.
* `cache`. Hvorvidt kodeblokken skal caches. Mulige værdier er `TRUE` og `FALSE`
* `highlight`. Hvorvidt kildekoden skal fremhæves. Mulige værdier er `TRUE` og `FALSE`
* `baggrund`. Kodeblokkens baggrundsfarve, rgb- og HTML-formater kan bruges, standardværdien er *"#F7F7F7"*.

## Yderligere læsning

For mere information se

* [Kodesyntaxfremhævning med minted](/latex/da/formatering/12-code-highlighting-with-minted.md)
* [Brug af farver i LaTeX](/latex/da/formatering/13-using-colors-in-latex.md)
* [grafer i LaTeX](/latex/da/fag-specifikt/08-pgfplots-package.md)
* [Indsættelse af billeder](/latex/da/flere-emner/27-inserting-images.md)
* [Tabeller](/latex/da/figurer-og-tabeller/01-tables.md)
* [Placering af billeder og tabeller](/latex/da/figurer-og-tabeller/02-positioning-images-and-tables.md)
* [TikZ-pakken](/latex/da/figurer-og-tabeller/05-tikz-package.md)
* [Matematiske udtryk](/latex/da/matematik/01-mathematical-expressions.md)
* [det **knitr** webside](http://yihui.name/knitr/)
* [det **knitr** pakkehåndbog](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/da/flere-emner/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.
