Itse tulee käytettyä sekä R:ää että Pythonia, niin työssä kuin koulutuksissakin. Kirjoitin aiemmin (osa 1) (osa 2) siitä miten näitä molempia kieliä on mahdollista käyttää ristiin samassa .Rmd
tai .ipynb
notebook-tiedostossa. Sittemmin on tullut mietittyä, miten R-paketteja voisi hallita samaan tapaan kuin Python-virtuaaliympäristöjä ja tämä kirjoitus käsitteleekin juuri tätä aihetta. Pitemmittä höpinöittä käydään suoraan asiaan.
Ympäristön pystytys
Olettaen että Anaconda (tai miniconda) on jo asennettu, helppo tapa päästä alkuun on luoda uusi R-ympäristö Anacondalla (Windowsilla Anaconda promptissa, muissa terminaalissa):
conda create -n r_env r-essentials r-base conda activate r_env
conda create -n r_env r-essentials r-base
-komento luo ympäristön ja asentaa sinne liudan hyödyllisiä paketteja. conda activate r_env
-komento taas ottaa luodun ympäristön käyttöön, mikä on tarpeen jos halutaan esim. asentaa uusia paketteja.
R-pakettien asentaminen onnistuu seuraavasti:
conda install r-package_name
missä package_name
on asennettavan paketin nimi. Tunniste r-
-pakettinimen edessä kertoo Anacondalle, että ollaan asentamassa R-pakettia, eikä Python-kirjastoa. Pakettien päivittäminen uudempiin versioihin onnistuu vastaavasti näin:
conda update r-package_name
Ympäristöön asennetut paketit saa näkyviin komennolla:
conda list
Oleellista on huomata, että listauksessa suuri osa paketeista on itseasiassa Python-kirjastoja. Miksi näin? Vähintäänkin siksi, että R:ää olisi mahdollista käyttää Jupyter-ympäristössä. Tätä varten ympäristöön on asennettu mm. python
, jupyter
ja ipykernel
.
R ja Jupyter
Jotta R:n käyttö Jupyterissä onnistuisi, on kuitenkin vielä tehtävä pari juttua. Ensiksikin on asennettava IRkernel
-paketti, joka tarjoaa Jupyterille R-kernelin (jokaiselle ohjelmointikielelle jota Jupeterissä haluaa käyttää on oltava oma kerneli). Asennus hoituu näin:
conda install r-irkernel
Tämän lisäksi pitää vielä käydä R:ssä ajamassa yksi komento, joka kertoo Jupyterille että R-kerneli on saatavilla. Avataan R komentorivillä komennolla R
ja sitten suoritetaan:
IRkernel::installspec() quit(save="no")
joista jälkimmäinen rivi sulkee R:n.
Rmarkdown tiedostojen käyttö
Entäpä sitten, jos haluaa ajaa olemassa olevia .Rmd
tiedosatoja Jupyterissä? Sehän ei nimittäin sellaisenaan onnistu. Tätä ongelmaa on ilmeisesti joku miettinyt aikaisemminkin, sillä on saatavilla useita eri Python-kirjastoja, joilla voidaan kääntää .Rmd
-formaatissa olevat notebook-tiedostot Jupyterin käyttämään .ipynb
-formaattiin (itse kyllä tykkään paljon enemmän R-studiosta, mutta makunsa kullakin).
Omien kokeilujen perusteella voin suositella sos-markdow
-kirjastoa, joka asentuu R-ympäristöön näin:
pip install sos-rmarkdown
ja sen jälkeen voidaankin kääntää haluttu .Rmd
-tiedosto näin:
sos convert input.Rmd output.ipynb
Entäpä toiseen suuntaan? Tähänkin on olemassa monia eri ratkaisuita (enkä ole tutustunut läheskään kaikkiin) ja esittelen tässä yhden, joka osoittautui ainakin omassa systeemissäni toimivaksi. Ensin asennetaan kaksi Python-kirjastoa:
pip install nbrmd testfixtures
Lisäksi on mentävä lisäämään .jupyter/jupyter_notebook_config.py
-tiedostoon uusi rivi:
c.NotebookApp.contents_manager_class = 'nbrmd.RmdFileContentsManager'
Omassa järjestelmässä avaan ko. tiedoston vaikka näin:
nano /Users/lasse/.jupyter/jupyter_notebook_config.py
Tämän jälkeen konvertointi onkin helppoa kuin hengittäminen (olen kokeillut, heinänteko ei ollut kovin helppoa):
nbrmd input.ipynb output.Rmd
Yllä esitettyyn sos-markdow
-kirjastoon ei ainakaan vielä ole implementoitu .ipynb
> .Rmd
-konversiota, mutta nbrmd
-kirjastolla tämä onnistuu:
nbrmd input.ipynb output.Rmd
Ympäristön jakaminen
R-ympäristön jakaminen onnistuu samaan tapaan kuin Python-ympäristölläkin.
Voidaan esimerkiksi luoda .yml
-tiedosto, joka sisältää tarvittavan
informaation ympäristön replikoimiseksi:
conda env export > environment.yml
Sitten onkin helppo homma pystyttää sama ympäristö vaikka toiseen järjestelmään ajamalla seuraava komento:
conda env create -f environment.yml
Lopuksi
Jos olet päässyt tähän asti, pitäisi sinulla olla toimiva R-ympäristö käytössäsi. Lisäksi voit vapaasti liikkua notebook-tiedostojen kanssa Jupyterin ja R-studion välillä, mikäli sille on tarvetta.
Toivottavasti tämä kirjoitus on ollut avuksi, sikäli kun ko. asian kanssa on ollut ongelmia. Mikäli jokin kohta ei toimi niinkuin pitäisi, otan mieluusti vastaan kommentteja ja parannusehdotuksia.
Ainiin, mikäli haluat eroon R-ympäristöstä, pitäisi riittää kun ajat seuraavan komennon (ja korvaat r_env
oman ympäristösi nimellä):
Lisää tietoa Anaconda ympäristöjen hallinnasta löytyy täältä.
