Statistiline andmeteadus ja visualiseerimine MTMS.01.100     Praktikumid     Projektid     Huvitavat materjali

Selles aines hakkame kasutama programmi RStudio, mis on integreeritud arenduskeskkond (IDE) tarkvara R jaoks. Arvutiklassi arvutitesse on see installeeritud. Kui enda arvutis on RStudio vanem versioon, siis soovitame uuesti installeerida kõige uuem.

Raportid paketiga knitr

Pakett knitr võimaldab R-is vähese vaevaga genereerida raporti oma analüüsi kohta. Eriti mugav on seda kasutada RStudio keskkonnas. Esmalt installeerime vajalikud paketid (seda on vaja teha ainult esmakordsel kasutamisel).

install.packages("knitr")
install.packages("rmarkdown")

R Markdown

Kõige lihtsam on kasutada raporti kirjutamisel märgenduskeelt Markdown. Alustuseks on kõige lihtsam RStudios valida File -> New File -> R Markdown ning valida soovitav väljundi formaat (näiteks html).

Joonisel on kõrvuti näidatud nii Markdown keeles kirjutatud koodi näide kui ka tulemus html-ina.

Näide 1

Vasakul Markdown, paremal html.

Kui soovid ise järele proovida, siis allpool on toodud seesama Markdown tekst. Salvesta see tekst .Rmd failina RStudios ning seejärel kliki nupul Knit HTML või kasuta klahvikombinatsiooni Ctrl + Shift + K.

---
output: html_document
---

# Esimese taseme pealkiri

See on Markdown märgenduskeeles kirjutatud dokument. 

## Teise taseme pealkiri

Mugavalt saab kirjutada *kursiivis* ja **rasvases kirjas**. 

### Kolmanda taseme pealkiri

Lihtsalt saab kirjutada nii nummerdamata loetelu

* esimene punkt
* teine punkt
* kolmas punkt

kui ka nummerdatud loetelu

1. esiteks
2. teiseks

Selle html-i tegemisel kasutas RStudio paketti rmarkdown.

Täpsemalt lugege R Markdowni kohta siit http://rmarkdown.rstudio.com/. Näiteks R Markdown Basics annab kiire ülevaate Markdown põhilisematest elementidest.

Näide 2

Proovime nüüd Markdown teksti vahele ka lisada R-i koodi. Selleks on kõige lihtsam lisada koodiblokk (code chunk), mis näeb välja selline
```{r}
# siia tuleb kood
```

Koodikasti tekitamiseks on kolm varianti:

  • Käsitsi: Vajalikud sümbolid (backticks) asuvad klaviatuuril backspace klahvi kõrval (tuleb kasutada koos shift klahviga).
  • Klikkides RStudios nupul Chunks ja sealt Insert Chunk.
  • Klahvikombinatsiooniga Ctrl + Alt + I.

Kopeeri nüüd järgnev tekst .Rmd faili ning tee sellest html (täpselt samamoodi nagu enne).

---
output: html_document
---

# Peatükk 1

See on Markdown märgenduskeeles kirjutatud dokument, mis sisaldab ka R-i koodi.

```{r}
# Genereerime 100 arvu
x = rnorm(100)
head(x, 3)
# teeme histogrammi
hist(x)
```

R-i koodi saab ka reasiseselt kasutada. Näiteks genereeritud arvude aritmeetiline keskmine on `r mean(x)` ja seda arvutatakse
$$\frac{1}{n} \sum_{i=1}^{n} x_i$$
valemi põhjal, kus $n$ näitab genereeritud väärtuste koguarvu. 

Vasakul R Markdown, paremal html.

Näiteks kui salvestasid lähtekoodi faili praks1.Rmd, siis on väljundiks saadud html samas kaustas nimega praks1.html.

pdf väljund

Juhul, kui soovid html-i asemel saada pdf-i, peab .Rmd faili algus olema selline

---
output: pdf_document
---

Pdf-i genereerimisel kasutab knitr TeX-i, seega on vaja, et arvutis oleks installeeritud näiteks MiKTeX.

Alternatiivselt Markdown keelele saab knitr paketi abil kirjutada ka LaTeXi dokumenti (laiendi .Rmd asemel tuleb kasutada siis .Rnw), aga sellega me käesolevas kursuses ei tegele.

Näpunäiteid

Kui me raportis ei soovi näidata R-i koodi, tuleb koodikasti jaoks spetsifitseerida echo=FALSE.

```{r, echo=FALSE}
x = rnorm(100)
hist(x)
```

Kui soovime raportis näidata R-i koodi, aga ei soovi seda jooksutada, tuleb koodikasti jaoks spetsifitseerida eval=FALSE.

```{r, eval=FALSE}
x = rnorm(100)
hist(x)
```

Kui kirjutame mingi koodibloki sisse opts_chunk$set(echo = FALSE), siis valik echo = FALSE määratakse kõigi järgnevate koodiblokkide jaoks (nõnda me ei pea seda igas blokis uuesti trükkima).

```{r}
library(knitr)
opts_chunk$set(echo = FALSE)
```

Kui soovime mõne tabeli või andmestiku ilusal kujul väljatrükki raportisse, võime kasutada näiteks funktsiooni kable paketist knitr.

```{r}
library(knitr)
data = data.frame(sugu = c("M", "M", "N"),
                  vanus = c(20, 60, 30),
                  pikkus = c(180, 200, 150))
kable(data)
```
## Warning: package 'knitr' was built under R version 3.2.3
sugu vanus pikkus
M 20 180
M 60 200
N 30 150

Abimaterjal R Markdowni kohta: