2.6R-koodipalat ja rivin R-koodi
Voit lisätä R-koodin osan joko RStudio-työkalurivin avulla (Lisää
-painiketta) tai pikanäppäintäCtrl + Alt + I
(Cmd + Optio + I
macOS:ssä).
Koodikappaleessa voi tehdä monia asioita: voit tuottaa tekstiä, taulukoita tai grafiikkaa. Voit hallita kaikkia näitä tulosteita hienosti lohkovaihtoehtojen avulla, jotka voidaan tarjota kiharan aaltosulkeiden sisällä (välissä```{r
ja}
). Voit esimerkiksi valita Piilota tekstitulosteen kappalevaihtoehdon kauttatulokset = 'piilota'
, tai aseta hahmon korkeudeksi 4 tuumaa kauttakuva.korkeus = 4
. Osavaihtoehdot erotetaan pilkuilla, esim.
```{r, chunk-label, results='piilota', fig.height=4}
Osavaihtoehdon arvo voi olla mielivaltainen R-lauseke, mikä tekee kappalevaihtoehdoista erittäin joustavia. Esimerkiksi chunk-vaihtoehtoeval
määrittää, arvioidaanko (suoritetaanko) koodipala, ja voit ehdollisesti arvioida kappaleen aiemmin määritellyn muuttujan kautta, esim.
``` {r}# Suorita koodi, jos päivämäärä on määritettyä päivää myöhempido_it = Sys.Date() > '2018-02-14'`````` {r, eval=do_it}x = rnorm(100)```
Siinä on suuri määrä lohkovaihtoehtojaknitrdokumentoitu osoitteessahttps://yihui.name/knitr/options. Luettelemme alla osan niistä:
eval
: Arvioidaanko koodipala.kaiku
: Toistaako lähdekoodi tulosdokumentissa (joku ei ehkä mieluummin lukee älykästä lähdekoodia, vaan vain tuloksia).tuloksia
: Kun asetettu'piilottaa'
, tekstitulostus piilotetaan; kun se on asetettu'kuten on'
, tekstituloste kirjoitetaan "sellaisenaan", esim. voit kirjoittaa raakaa Markdown-tekstiä R-koodista (kutencat('**Markdown** on siistiä.\n')
). Oletuksena tekstitulostus kääritään sanatarkasti elementteihin (yleensä pelkkiin koodilohkoihin).romahdus
: Yhdistetäänkö tekstituloste ja lähdekoodi yhdeksi tulosteen koodilohkoksi. Tämä on enimmäkseen kosmeettista:romahtaa = TOSI
tekee tulosteesta kompaktimman, koska R-lähdekoodi ja sen tekstitulostus näytetään yhdessä tulostelohkossa. Oletusarvoromahtaa = EPÄTOSI
tarkoittaa R-lauseketta ja niiden tekstitulostus on erotettu eri lohkoihin.Varoitus
,viesti
, javirhe
: Näytetäänkö varoitukset, viestit ja virheet tulosteasiakirjassa. Huomaa, että jos asetatvirhe = EPÄTOSI
,rmarkdown::render()
pysähtyy virheen sattuessa koodikappaleessa, ja virhe näytetään R-konsolissa. Samoin kunvaroitus = EPÄTOSI
taiviesti = EPÄTOSI
, nämä viestit näytetään R-konsolissa.sisältää
: Sisällytetäänkö tulosasiakirjaan mitään koodipalasta. Kunsisällyttää = EPÄTOSI
, tämä koko koodipala jätetään pois lähdöstä, mutta huomaa, että se arvioidaan silti, joseval = TOSI
. Kun yrität asettaakaiku = EPÄTOSI
,tulokset = 'piilota'
,varoitus = EPÄTOSI
, javiesti = EPÄTOSI
, tarkoitat todennäköisesti vain yhtä vaihtoehtoasisällyttää = EPÄTOSI
sen sijaan, että tukahduttaisit erityyppiset tekstit erikseen.kätkö
: otetaanko välimuisti käyttöön. Jos välimuisti on käytössä, samaa koodikappaletta ei arvioida seuraavan asiakirjan kääntämisen yhteydessä (jos koodikappaletta ei ole muokattu), mikä voi säästää aikaa. Haluan kuitenkin rehellisesti muistuttaa teitä kahdesta vaikeasta tietojenkäsittelytieteen ongelmasta (Phil Karltonin kautta): asioiden nimeäminen ja välimuistin mitätöiminen. Välimuisti voi olla kätevää, mutta joskus myös hankalaa.fig.width
jafig.korkeus
: R-kuvaajan (graafisen laitteen) koko tuumina. R-kuvaajat koodipaloissa tallennetaan ensin graafisen laitteen kauttaknitrja kirjoitetaan sitten tiedostoihin. Voit myös määrittää kaksi vaihtoehtoa yhdessä yhdeksi osavaihtoehdoksifig.dim
, esim.,fig.dim = c(6, 4)
tarkoittaakuva leveys = 6
jakuva.korkeus = 4
.ulos.leveys
jaulos.korkeus
: R-tulosteen koko tulosasiakirjassa. Nämä vaihtoehdot voivat skaalata kuvia. Voit käyttää prosentteja, esim.out.width = '80 %'
tarkoittaa 80 % sivun leveydestä.fig.align
: Kaavioiden kohdistus. Se voi olla'vasen'
,'keskusta'
, tai'oikein'
.kehittäjä
: Graafinen laite R-kuvan tallentamiseen. Tyypillisesti on'pdf'
LaTeX-ulostulolle ja'png'
HTML-tulostukseen, mutta voit varmasti käyttää muita laitteita, kuten"svg"
tai'jpeg'
.fig.cap
: Kuvan kuvateksti.lapsi
: Voit sisällyttää pääasiakirjaan aliasiakirjan. Tämä vaihtoehto vie polun ulkoiseen tiedostoon.
Osavaihtoehdot sisäänknitrvoi olla yllättävän voimakas. Voit esimerkiksi luoda animaatioita juonisarjasta koodikappaleessa. En selitä miten täällä, koskase vaatii ulkoisen ohjelmistopaketin, mutta kehota sinua lukemaan asiakirjat huolellisesti löytääksesi mahdollisuudet. Voit myös lukeaXie(2015), joka on kattava opasknitrpaketti, mutta valitettavasti puolueellinen LaTeX-käyttäjiä kohtaan historiallisista syistä (joka oli yksi syistä, miksi halusin kirjoittaa tämän R Markdown -kirjan).
On valinnainen chunk-vaihtoehto, joka ei ota mitään arvoa, joka on kappaleen otsikko. Sen pitäisi olla osan otsikon ensimmäinen vaihtoehto. Osatunnisteita käytetään pääasiassa tonttien ja välimuistin tiedostonimissa. Jos palan tunniste puuttuu, oletusarvoinen lomakeunnamed-chunk-i
syntyy, missäi
on inkrementaalinen. Suosittelen, että käytät vain aakkosnumeerisia merkkejä (a-z
,A-Z
ja0-9
) ja viivat (-
) tarroissa, koska ne eivät ole erikoismerkkejä ja toimivat varmasti kaikissa tulostusmuodoissa. Muut merkit, erityisesti välilyönnit ja alaviivat voivat aiheuttaa ongelmia tietyissä paketeissa, kutenkirja alas.
Jos tietty asetus on asetettava usein arvoon useissa koodipapereissa, voit harkita sen asettamista globaalisti asiakirjasi ensimmäisessä koodiosassa, esim.
```{r, setup, include=FALSE}knitr::opts_chunk$set(fig.width = 8, collapse = TRUE)```
Koodipalojen lisäksi voit myös lisätä R-objektien arvoja tekstiin. Esimerkiksi:
``` {r}x = 5 # ympyrän säde```Ympyrälle, jolla on säde`r x`,sen alue on`r pi * x^2`.
2.6.1Kuvat
Oletusarvoisesti R-koodin tuottamat luvut sijoitetaan välittömästi sen koodikappaleen jälkeen, josta ne on luotu. Esimerkiksi:
``` {r}tontti (autot, kpl = 18)```
Voit antaa kuvatekstin käyttämälläfig.cap
lohkovaihtoehdoissa. Jos asiakirjan tulostusmuoto tukee vaihtoehtoafig_caption: totta
(esim. tulostusmuotormarkdown::html_document
), R-kuvat sijoitetaan kuvioympäristöihin. PDF-tulosteen tapauksessa tällaiset luvut numeroidaan automaattisesti. Jos haluat numeroida lukuja myös muissa muodoissa (kuten HTML), katsokirja alasluvussa oleva paketti12(katso erityisesti kohta12.4.4).
PDF-dokumentit luodaan R Markdownista luotujen LaTeX-tiedostojen avulla. LaTeX-aloittelijoille erittäin yllättävä tosiasia on, että luvut kelluvat oletuksena: vaikka luoisit kaavion ensimmäisellä sivulla olevan koodikappaleen muodossa, koko kuvioympäristö voi kellua seuraavalle sivulle. Näin LaTeX toimii oletuksena. Sillä on taipumus kellua lukuja sivujen ylä- tai alaosaan. Vaikka se voi olla ärsyttävää ja häiritsevää, suosittelemme, että vältät "Whac-A-Mole" -pelin pelaamisen kirjoittamisen alussa, eli yrität epätoivoisesti sijoittaa hahmoja "oikein", kun ne näyttävät aina väistelevän sinua. Voit halutessasi hienosäätää paikkoja, kun sisältö on valmis käyttämälläfig.pos
palavaihtoehto (esim.fig.pos = 'h')
. Katsohttps://www.overleaf.com/learn/latex/Positioning_images_and_tablesmahdollisille arvoillefig.pos
ja yleisempiä vinkkejä tästä käyttäytymisestä LaTeXissä. Lyhyesti sanottuna tämä voi olla vaikea ongelma PDF-tulostuksessa.
Voit sijoittaa useita lukuja vierekkäin samasta koodikappaleesta käyttämälläfig.show='hold'
vaihtoehto yhdessäulos.leveys
vaihtoehto. Kuva2.5näyttää esimerkin kahdesta kaaviosta, joiden leveys on50 %
.
par(maaliskuu = c(4,4, .2, .1))juoni(autot,pch = 19)juoni(paine,pch = 17)
KUVA 2.5: Kaksi tonttia vierekkäin.
Jos haluat sisällyttää grafiikan, jota ei ole luotu R-koodista, voit käyttääknitr::include_graphics()
-toiminto, joka antaa sinulle enemmän hallintaa kuvan attribuutteihin kuin Markdown-syntaksia![alt text or image title](polku/kuvaan)
(Voit esim. määrittää kuvan leveyden kauttaulos.leveys
). Kuva2.6tarjoaa tästä esimerkin.
```{r, out.width='25%', fig.align='center', fig.cap='...'}knitr::include_graphics('images/hex-rmarkdown.png')```
KUVA 2.6: R Markdown -heksalogo.
2.6.2Taulukot
Helpoin tapa lisätä taulukoita on käyttääneuloa::kaapeli()
, joka voi luoda taulukoita HTML-, PDF- ja Word-tulosteita varten.3Taulukon kuvatekstejä voi lisätä ohittamallakuvateksti
toimintoon, esim.
``` {r tables-mtcars}knitr::kable(iiris[1:5, ], caption = 'Teksti')```
Taulukot muissa kuin LaTeX-tulostusmuodoissa sijoitetaan aina koodilohkon jälkeen. LaTeX/PDF-tulostusmuodoissa taulukoissa on sama ongelma kuin kuvissa: ne voivat kellua. Jos haluat välttää tämän toiminnan, sinun on käytettävä LaTeX-pakettiapitkäpöytä, joka voi hajottaa taulukoita useille sivuille. Tämä voidaan saavuttaa lisäämällä\usepackage{pitkäpöytä}
LaTeX:n johdanto-osaan ja ohittaminenpitkäpöytä = TOSI
tokaapeli()
.
Jos etsit edistyneempää taulukkojen tyylin hallintaa, suosittelemme käyttämäänkaapeli Extrapaketti, joka tarjoaa toimintoja PDF- ja HTML-taulukoiden ulkoasun mukauttamiseen. Taulukoiden muotoilu voi olla erittäin monimutkainen tehtävä, varsinkin kun tietyt solut kattavat useamman kuin yhden sarakkeen tai rivin. Se on vielä monimutkaisempaa, kun on harkittava erilaisia tulostusmuotoja. Esimerkiksi monimutkaista taulukkoa on vaikea saada toimimaan sekä PDF- että HTML-tulostuksessa. Tiedämme, että se on pettymys, mutta joskus saatat joutua harkitsemaan vaihtoehtoisia tapoja esittää tietoja, kuten käyttää grafiikkaa.
Selitämme osiossa12.3kuinkakirja alaspaketti laajentaa toimintojarmarkdownmahdollistaaksesi kuvien ja taulukoiden helposti ristiinviittauksen tekstissäsi.
Viitteet
Xie, Yihui 2015.Dynaamiset asiakirjatRja Knitr. 2. painos Boca Raton, Florida: Chapman; Hall/CRC.https://yihui.name/knitr/.
Voit myös harkitaparipaketti. Pöytien valmistukseen on olemassa useita muita paketteja, mmxtable,Hmisc, jatähtien katselija, mutta nämä ovat yleensä vähemmän yhteensopivia useiden tulostusmuotojen kanssa.↩︎