> 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/sv/fler-amnen/29-knitr.md).

# Knitr

Som noterats på Wikipedia, [Knitr är en motor för dynamisk rapportgenerering med R](https://en.wikipedia.org/wiki/Knitr), ett statistikinriktat programmeringsspråk. Den här artikeln förklarar hur du lägger till R-kod i ditt LaTeX-dokument för att generera ett dynamiskt resultat.

I en standardinstallation av LaTeX måste du ha R konfigurerat i ditt operativsystem och köra några särskilda kommandon för att kompilera det. Overleaf kan bespara dig besväret, **knitr** fungerar direkt utan extra konfiguration.

## Introduktion

Dokument som innehåller R-kod måste sparas med tillägget `.Rtex` eller `.Rnw`, annars fungerar inte koden. Låt oss se ett exempel:

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

Du kan skriva R-kommandon i ditt \\LaTeX{}-dokument som kommer att bearbetas och vars utdata inkluderas i dokumentet:

<<>>=
# Skapa en talföljd
X = 2:10

# Visa grundläggande statistiska mått
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/7ae16e54fdcc74da39eb334a26563bbb861fa414)

&#x20;[Öppna detta `knitr` exempel 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 ser är texten mellan tecknen `<<>>=` och `@` är R-kod, denna kod och dess utdata skrivs ut i ett listningsliknande format. Detta kodblock kan ta några extra parametrar för att anpassa den dynamiska utmatningen. Se nästa avsnitt.

## Kodblock

Ett kodblock som det som presenterades i föregående avsnitt kallas vanligtvis ett *kodblock*. Du kan ange några extra alternativ i knitr-kodblock. Se exemplet nedan:

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

Du kan skriva R-kommandon i ditt \\LaTeX{}-dokument som kommer att bearbetas och vars utdata inkluderas i dokumentet:

<<echo=FALSE, cache=TRUE>>=
# Skapa en talföljd
X = 2:10

# Visa grundläggande statistiska mått
summary(X)

@
\end{document}
```

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

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

Det finns tre ytterligare alternativ som anges inuti `<<` och `>>`.

**echo=FALSE**

Detta döljer koden och skriver endast ut utdata som genererats av R.

**cache=TRUE**

Om cache är satt till true körs inte kodblocket, endast objekten som det genererar. Detta sparar tid om data i det kodblocket inte har ändrats. Observera att alternativet cache=TRUE för närvarande inte stöds i Overleaf, men det bör fungera lokalt.

Se [referensguiden](#reference-guide) för fler alternativ.

## Infogade kommandon

Det är möjligt att komma åt objekt som genererats i ett kodblock och skriva ut dem infogat i texten.

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

Du kan skriva R-kommandon i ditt \\LaTeX{}-dokument som kommer att bearbetas och vars utdata inkluderas i dokumentet:

<<echo=FALSE, cache=TRUE>>=
# Skapa en talföljd
X = 2:10

# Visa grundläggande statistiska mått
summary(X)

@

Så, medelvärdet för datan är $\\Sexpr{mean(X)}$
\end{document}
```

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

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

Kommandot `\\Sexpr{mean(X)}` skriver ut utdata som returneras av R-koden `mean(X)`. Inom klamrarna kan vilket R-kommando som helst anges.

## Diagram

Diagram kan också läggas till i ett **knitr** dokument. Se nästa exempel

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

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="Första diagrammet">>=

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

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

@

Figuren \\ref{fig:plot1} är ett enkelt histogram.

\end{document}
```

![KnitrDemo4.png](/files/5d3114dcd4eba05e493e4c764929e0503d0784a4)

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

Detta histogram använder data som lagras i "data.txt", sparad i den aktuella arbetskatalogen. Några figurspecifika alternativ skickas till kodblocket.

**plot1**

Detta är etiketten som används för att hänvisa till diagrammet. Prefixet "fig:" är obligatoriskt. Du kan se i exemplet att figuren hänvisas till med \\\ref{fig:plot1}.

**fig.pos="t"**

Positioneringsparameter. Detta är samma som används i figure-miljön.

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

Figurens bredd och höjd.

**fig.cap="Första diagrammet"**

Bildtext för figuren.

## Externa R-skript

Du kan importera delar av ett externt R-skript till ett **knitr** dokument. Detta är mycket användbart eftersom det är ganska vanligt att skriva och felsöka skriptet i ett externt program innan det inkluderas i ditt dokument.

Anta att vi har följande R-kod i en fil som heter `mycode.R` som vi inkluderar i vårt LaTeX-dokument:

```latex
## ---- myrcode1
# Skapa en talföljd
 X = 2:10

## ---- myrcode2
# Visa grundläggande statistiska mått
summary(X)
```

Observera raderna

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

och

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

Dessa markerar början på ett kodblock och är obligatoriska om du vill använda detta skript i vårt dokument, som visas i följande kodfragment:

```latex
Kodblocket nedan kommer inte att skrivas ut

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

Koden måste visas här

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/4646cfd1ba2a9d3e058bdbe9d4693127a97a434b)

Det första kodblocket skrivs inte ut och används endast för att importera skriptet med kommandot `read_chunk("mycode.R")`, därför är alternativet `echo=FALSE` inställt. Skript får inte heller cachas. När skriptet har importerats kan du skriva ut ett kodblock med hjälp av etiketten du angav efter `## ----`. I detta fall är det `myrcode2`.

Vi har lagt alla artikelns kodfragment i ett projekt som  [du kan öppna på Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=) .

## Referensguide

**Några alternativ för kodblock**

* `results`. Ändrar beteendet för resultaten som genereras av R-koden, möjliga värden är
  * `markup` Använd LaTeX för att formatera utdata.
  * `asis` Skriver ut råa resultat från R.
  * `hold` Håller utdataresultaten och skickar ut dem i slutet av kodblocket.
  * `hide` Dölj resultaten.
* `echo`. Om R-källkoden ska inkluderas. Kan ta andra parametrar, `echo=2:3` skriver endast ut den andra och tredje raden; `echo=-2:-3` utesluter endast den andra och tredje raden.
* `cache`. Om kodblocket ska cachas. Möjliga värden är `TRUE` och `FALSE`
* `highlight`. Om källkoden ska markeras. Möjliga värden är `TRUE` och `FALSE`
* `background`. Kodblockets bakgrundsfärg, rgb- och HTML-format kan användas, standardvärdet är *"#F7F7F7"*.

## Vidare läsning

För mer information, se

* [Kodmarkering med minted](/latex/sv/formatering/12-code-highlighting-with-minted.md)
* [Använda färger i LaTeX](/latex/sv/formatering/13-using-colors-in-latex.md)
* [diagram i LaTeX](/latex/sv/faltspecifikt/08-pgfplots-package.md)
* [Infoga bilder](/latex/sv/fler-amnen/27-inserting-images.md)
* [Tabeller](/latex/sv/figurer-och-tabeller/01-tables.md)
* [Placering av bilder och tabeller](/latex/sv/figurer-och-tabeller/02-positioning-images-and-tables.md)
* [TikZ-paketet](/latex/sv/figurer-och-tabeller/05-tikz-package.md)
* [Matematiska uttryck](/latex/sv/matematik/01-mathematical-expressions.md)
* [den **knitr** webbsida](http://yihui.name/knitr/)
* [den **knitr** paketmanual](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/sv/fler-amnen/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.
