> 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/fi/lisaa-aiheita/29-knitr.md).

# Knitr

Kuten Wikipediassa todetaan, [Knitr on moottori dynaamiseen raporttien luontiin R:llä](https://en.wikipedia.org/wiki/Knitr), tilastotieteeseen painottuva ohjelmointikieli. Tässä artikkelissa selitetään, kuinka lisäät R-koodia LaTeX-dokumenttiisi dynaamisen tulosteen luomiseksi.

Tavallisessa LaTeX-jakelussa sinun täytyy asentaa R käyttöjärjestelmääsi ja suorittaa joitakin erikoiskomentoja sen kääntämiseksi. Overleaf voi säästää sinut tältä vaivalta, **knitr** toimii suoraan ilman lisäasennuksia.

## Johdanto

R-koodia sisältävät dokumentit on tallennettava laajennuksella `.Rtex` tai `.Rnw`, muuten koodi ei toimi. Katsotaan esimerkki:

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

Voit kirjoittaa R-komentoja \LaTeX{}-dokumenttiisi; ne käsitellään ja niiden tuloste sisällytetään dokumenttiin:

<<>>=
# Luo lukujono
X = 2:10

# Näytä perustason tilastolliset tunnusluvut
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/25911fdacde4793c731fb9742b7b343fcebe6523)

&#x20;[Avaa tämä `knitr` esimerkki Overleafissa](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Kuten näet, merkkien välissä oleva teksti `<<>>=` ja `@` on R-koodia; tämä koodi ja sen tuloste tulostetaan listauksen kaltaisessa muodossa. Tämä koodilohko voi ottaa joitakin lisäparametreja dynaamisen tulosteen mukauttamiseksi. Katso seuraava osio.

## Koodilohkot

Edellisessä osiossa esiteltyä koodilohkoa kutsutaan yleensä *koodilohkoksi*. Voit asettaa joitakin lisäasetuksia knitr-koodilohkoihin. Katso alla oleva esimerkki:

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

Voit kirjoittaa R-komentoja \LaTeX{}-dokumenttiisi; ne käsitellään ja niiden tuloste sisällytetään dokumenttiin:

<<echo=FALSE, cache=TRUE>>=
# Luo lukujono
X = 2:10

# Näytä perustason tilastolliset tunnusluvut
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/4b82bd0c050326ff656c0126d18854e589c78df2)

&#x20;[Avaa tämä `knitr` esimerkki Overleafissa](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Sisälle annetaan kolme lisäasetusta `<<` ja `>>`.

**echo=FALSE**

Tämä piilottaa koodin ja tulostaa vain R:n tuottaman tulosteen.

**cache=TRUE**

Jos cache on asetettu arvoon true, lohkoa ei suoriteta, vaan vain sen luomat objektit. Tämä säästää aikaa, jos kyseisen lohkon data ei ole muuttunut. Huomaa, että cache=TRUE-asetusta ei tällä hetkellä tueta Overleafissa, mutta sen pitäisi toimia paikallisesti.

Katso [viiteopas](#reference-guide) lisää asetuksia varten.

## Sisäkkäiset komennot

On mahdollista käyttää lohkossa luotuja objekteja ja tulostaa ne rivinsisäisesti.

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

Voit kirjoittaa R-komentoja \LaTeX{}-dokumenttiisi; ne käsitellään ja niiden tuloste sisällytetään dokumenttiin:

<<echo=FALSE, cache=TRUE>>=
# Luo lukujono
X = 2:10

# Näytä perustason tilastolliset tunnusluvut
summary(X)

@

Joten datan keskiarvo on $\Sexpr{mean(X)}$
\end{document}
```

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

&#x20;[Avaa tämä `knitr` esimerkki Overleafissa](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Komento `\Sexpr{mean(X)}` tulostaa R-koodin palauttaman tulosteen `mean(X)`. Aaltosulkeiden sisään voidaan antaa mikä tahansa R-komento.

## Kuvat

Kuvia voidaan myös lisätä **knitr** dokumenttiin. Katso seuraava esimerkki

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

@

Kuva \ref{fig:plot1} on yksinkertainen histogrammi.

\end{document}
```

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

&#x20;[Avaa tämä `knitr` esimerkki Overleafissa](https://www.overleaf.com/project/new/template/20427?id=69890965\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Tämä histogrammi käyttää dataa, joka on tallennettu tiedostoon "data.txt" ja joka on tallennettu nykyiseen työhakemistoon. Lohkoon välitetään muutamia kuvaan liittyviä asetuksia.

**plot1**

Tätä selitettä käytetään viittaamaan kuvaan. Etuliite "fig:" on pakollinen. Esimerkissä näet, että kuvaan viitataan komennolla \ref{fig:plot1}.

**fig.pos="t"**

Sijoitusparametri. Tätä käytetään samalla tavalla kuin figure-ympäristössä.

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

Kuvan leveys ja korkeus.

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

Kuvateksti.

## Ulkoiset R-skriptit

Voit tuoda ulkoisen R-skriptin osia **knitr** dokumenttiin. Tämä on erittäin hyödyllistä, sillä on melko tavallista kirjoittaa ja virheenkorjata skripti ulkoisessa ohjelmassa ennen sen sisällyttämistä dokumenttiin.

Oletetaan, että meillä on seuraava R-koodi tiedostossa nimeltä `mycode.R` jonka sisällytämme LaTeX-dokumenttiimme:

```latex
## ---- myrcode1
# Luo lukujono
 X = 2:10

## ---- myrcode2
# Näytä perustason tilastolliset tunnusluvut
summary(X)
```

Huomaa rivit

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

ja

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

Ne merkitsevät koodilohkon alkua ja ovat pakollisia, jos haluat käyttää tätä skriptiä dokumentissamme, kuten seuraavassa koodinpätkässä näytetään:

```latex
Alla olevaa lohkoa ei tulosteta

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

Koodin täytyy näkyä täällä

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/18eedc9b7c41fe48c111a067f165754e96f3196e)

Ensimmäistä lohkoa ei tulosteta, sitä käytetään vain skriptin tuomiseen komennolla `read_chunk("mycode.R")`, siksi asetus `echo=FALSE` on asetettu. Lisäksi skriptejä ei saa välimuistittaa. Kun skripti on tuotu, voit tulostaa lohkon käyttäen tunnistetta, jonka asetat jälkeen `## ----`. Tässä tapauksessa se on `myrcode2`.

Olemme koonneet kaikki artikkelin koodinpätkät projektiin, jonka  [voit avata Overleafissa](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=) .

## Viiteopas

**Joitakin lohkoasetuksia**

* `tulokset`. Muuttaa R-koodin tuottamien tulosten käyttäytymistä; mahdolliset arvot ovat
  * `markup` Käytä LaTeXia tulosteen muotoiluun.
  * `asis` Tulostaa R:n raakatulokset.
  * `hold` Pitää tulosteen ja siirtää sen lohkon loppuun.
  * `hide` Piilota tulokset.
* `echo`. Määrittää, sisällytetäänkö R-lähdekoodi. Voi saada myös muita parametreja, `echo=2:3` tulostaa vain toisen ja kolmannen rivin; `echo=-2:-3` jättää pois vain toisen ja kolmannen rivin.
* `cache`. Määrittää, välimuistitaanko koodilohko. Mahdolliset arvot ovat `TRUE` ja `FALSE`
* `highlight`. Määrittää, korostetaanko lähdekoodi. Mahdolliset arvot ovat `TRUE` ja `FALSE`
* `background`. Lohkon taustaväri; rgb- ja HTML-muotoja voidaan käyttää, oletusarvo on *"#F7F7F7"*.

## Lisälukemista

Lisätietoja on kohdassa

* [Koodin korostus mintedillä](/latex/fi/muotoilu/12-code-highlighting-with-minted.md)
* [Värien käyttäminen LaTeXissa](/latex/fi/muotoilu/13-using-colors-in-latex.md)
* [kuvat LaTeXissa](/latex/fi/alakohtaiset/08-pgfplots-package.md)
* [Kuvien lisääminen](/latex/fi/lisaa-aiheita/27-inserting-images.md)
* [Taulukot](/latex/fi/kuvat-ja-taulukot/01-tables.md)
* [Kuvien ja taulukoiden sijoittelu](/latex/fi/kuvat-ja-taulukot/02-positioning-images-and-tables.md)
* [TikZ-paketti](/latex/fi/kuvat-ja-taulukot/05-tikz-package.md)
* [Matemaattiset lausekkeet](/latex/fi/matematiikka/01-mathematical-expressions.md)
* [sivustolta **knitr** verkkosivu](http://yihui.name/knitr/)
* [sivustolta **knitr** paketin käyttöopas](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/fi/lisaa-aiheita/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.
