Joonistamine tundub pealtnäha lihtne ülesanne, aga siinsegi kodutöö juures paistis tegemist jaguma. Õpikut lugedes tegin harjutamise mõttes samad käsud läbi R-iga kaasas oleva mtcars-nimelise autoandmestiku peal - tekkis läbikatsetatud kujutlus, et mida miski parameeter muudab. Lugedes võttis jupp aega harjuda ja meelde jätta, et mida mingi andmestik sisaldab, millised tulbad seal on, mida nad tähendavad ning mis ühikutes midagi mõõdetakse. Kui andmetest pilt ees, alles siis on julgem jooniseid koostada ja pärast hinnata, et kas kokku sirgeldatu ka kuidagimoodi usaldatav on. Muuhulgas leidsin aga toreda R abil andmeanalüüsi õpikumaterjalide kogumiku aadressilt http://www.highstat.com/ Mõndagi saab aru juba näitandmete ja -koodide põhjal. Kui kunagi raamatutele enestele ligi pääseda õnnestub, siis võib juba päris targaks saada. Mööda õpikut eri kohtades oli seletatud, et millisest tulbast mida välja lugeda võib. Mõnda väärtust ja tähendust mõistsin siiski alles hilisemaid ülesandeid tehes. Mis ühikutes aga oli hukkunud kahepaiksete katselappide kaugus rahvuspargist, see jäigi lahendamise käigus selgusetuks. Lihtsamad sektordiagrammid tulid kergesti. Siltide üksteisest eemale hoidmine osutus aga keerulisemaks. Jaotiste ühendamine ja nende arvu vähendamine on küll kirvemeetod, aga teeb joonist siiski loetavamaks. Lõpuks leidsin käsklused floating.pie ja pie.labels, mille abil võimalik sektoreid ja silte paindlikumalt sättida. Lihtsat ja viisakat vahendit aga siltide ja sektorite omavahel joonega ühendamiseks ei leidnud. Kui muu ei aita, siis tõenäoliselt saab joonte otspunktid välja arvutada ja tavalise lines-käsu abil need seosed tekitada. Paigutust arvatavasti aitab parandada ka siltide kaugusraadiuste kordamööda muutmine, et tekstid veidi kaugemal üksteisest oleksid. Liigirikkusele piirkondade kaupa mitmesuguste tunnuste arvutamisel andis tapply koos mitut väärtust tagastava funktsiooniga küll andmed välja, aga nende viisakaks tabelina kuvamiseks ei leidnud muud moodust, kui do.call ja cbind kokku liita - muidu kippus tulemus listi tüüpi jääma. Tundub nurgatagune lähenemine, aga vähemasti töötab. Teksti juures kasutati läbisegi "standard deviation" ning "standard error". Esimene mu arusaamist mööda andmete standardhälve, mis näitab väärtuste jaotumist. Teine aga keskväärtuse hinnangu standardhälve, mis sarnaste andmete puhul väheneb pöördvõrdeliselt mõõtmistulemuste arvu ruutjuurega. Püüdsin siis mõlemad joonisele kuvada. Boxplot (karp ja vurrud) tursa parasiitidega näitas, et suur hulk on nullilisi andmeid. Soovitati grupeerida mitme tunnuse kaupa ja sealtkaudu jälgida tunnuste omavahelisi seoseid. Mängisin nendega mitut moodi, aga mingit selgepiirilist seost ei suutnud näidata. Et küllalt palju oli nullilisi andmeid (terveid kalu), siis püüdsin ka eraldi vaadata otsa kaladele parasiitidega ja ilma. Kullide juures oli tükk nuputamist katse kirjelduse ja mõõdetavate andmete üle. Negotiation tõlkisin lõpuks enese jaoks kullipoja häälitsuste arvuks. Et kusagilt eraldi kuupäeva ei leidnud, siis ei mõistnud neid ka otse arvestada. Kuna igal pesal oli kaks eraldi toiduvalikuga ööd, siis nende kombinatsioon eristas päevad. Samas kõiki kombinatsioone sai nõnda palju, et nad hoolimata suurendamisest vaid vaevu loetavana joonisele mahtusid. Pealkirjad aitavad teksti liigendada. Mõnda kohta suurema vahe tegemiseks aitab kolme kriipsu abil tekitatud vahejoon. See tuleb tavastiili puhul küll imelikult hele, kuid vähemasti on olemas. Mõnda kohta püüdsin aga lõikude vahele pikemat valget ala jätta, aga see ei tahtnud kuidagi õnnestuda. Foorumitest soovitati HTMLi br-e jõuga vahele kirjutada, aga seegi ei pruugi hea lahendus olla eriti arvestades juhtu, et mõnikord võib väljundiks pdf või doc olla. Äkki on mõni ametlikum moodus veidi pikema tühja ala tekitamiseks? Failimajandus, pandoc Sel korral teadsin, et ülesannet pean lahendama mitme arvuti taga. Püüdsin leida moodust, et ei peaks igal korral eraldi faile kopeerima ja kaasa tassima ja pärast tagasi kopeerima, vaid saaks kuidagi mugavalt käske katsetada, markdowni kirja panna ja heal juhul ka tulemust vaadata. Esimesed kaks võimalust toimisid ilusti kooli serveris. Linuxi R-i konsool suhtleb minuga viisakasti, joe või WinSCP abil saab R-i faile muuta, arvutiaknas vajalikke ridu kopeerida ning markdowni faili võib ka rahulikult tekstiredaktoriga kokku panna. Markdownist HTML-väljundi välja pigistamine aga osutus omaette pähkliks. Foorumist leidsin soovituse käsurealt kompileerimiseks: R -e "rmarkdown::render('6.rmd')" Kästi aga pandoc-i nimeline teek peale panna. Omal kooli serveris administraatoriõigusi pole, nii andsin vastava palve administraatorile. Mõne aja pärast oli teek olemas. Käivitasin renderduskäsu uuesti, tulemuseks oli aga korduvalt veateade Error: pandoc version 1.12.3 or higher is required and was not found. Execution halted Masinas olev versioon oli liiga väike. [jaagup@greeny ~]$ pandoc -v pandoc 1.9.4.1 Administraator kurtis, et paketihaldurist oluliselt uuemat versiooni ei tule, kompileeris siis lähtekoodist kokku - fail aga jäi eraldi kataloogi. Markdown kurtis endiselt, et versioon on liiga vana. Vahepeal avastasin, et paketi knitr käsklus knit suudab rmd-faili ette võtta ja läbi töödelda, ka vajalikud pildid tekitada. Ütlesin talle knit("6.rmd", "6.html") ning rõõmustasin, et lugu võiks juba töötada. Lähemal uurimisel aga selgus, et HTML-faili oli jõudnud siiski enamvähem samasugune markdowni tekst, lihtsalt piltide kohta olid viited, et kust seda võtta. Viisakat HTMLi aga endiselt ei paistnud. Siis aga leidsin, et uue pandoc-i kaust tuleb eraldi käsuga ette anda ning võiski pärast masina mõningat ragistamist loetavat HTMLi imetleda. [jaagup@minitorn 6]$ more html.R Sys.setenv(RSTUDIO_PANDOC="/root/.local/bin") rmarkdown::render("6.rmd") Kusjuures pikema ja keerulisema rmd-faili puhul kurnab selline HTMLiks kompileerimine masinat päris kõvasti. Praeguse kodutöö puhul sai näiteks server paar minutit ragistada. Mõtisklen, et kui tahetakse tervet raamatut selliselt kirja panna, siis kas ja kuidas nende rmd-failidega toimetatakse. Kas tehakse igast peatükist omaette fail ja saadakse seal sees hakkama. Või on mõni muu moodus, kus mõne väikese paranduse tegemisel lõpptulemuse nähtavale kujule kergemini saab? Nuputan, et kuidas mitme kasutaja puhul selline failide ja versioonide haldamine käib. Kas saab oma rolli programmeerijatele tuttav git või on levinud mõni "tavainimesele" tuttavam lahendus? http://minitorn.tlu.ee/~jaagup/oma/too/16/analyytika/6/6.html Jaagup