R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Paikallinen pakettivarasto

R-pakettien asentaminen on helppoa, jos käytössä on internetyhteys. Pakettivarastot (repositoryt) osaavat hoitaa myös asennettavan paketin riippuvuuksien asentamisen, mikä on erinomaisen miellyttävä ominaisuus. Toisinaan on kuitenkin pakko toimia ympäristössä, josta ei ole suoraa internetyhteyttä. Tällöin paketit on ladattava jossakin toisessa ympäristössä internetistä, ja siirrettävä sitten tuohon rajoitettuun ympäristöön. Ongelmaksi jää enää selvittää, mitkä paketit tarvitaan ja miten ne saadaan asennettua rajoitetussa ympäristössä.

Yleensä käyttäjät eivät tarvitse kaikkia mahdollisia paketteja esimerkiksi CRAN- tai Bioconductor-pakettivarastoista, vaan ainoastaan paljon pienemmän kokoelman. Jos kyseessä on yksittäinen tai korkeintaan muutama paketti, voi asian hoitaa käsipelillä. CRAN:n pakettikohtaisilla sivuilla on lueteltu ne paketit, joista kyseinen paketti riippuu. Jotta paketin saa ladattua käyttöön, on vähintääkin kaikki riippuvuudetkin asennettava. Esimerkiksi paketilla rio on yhteensä 7 muuta pakettia riippuvuuksina. Jotta rio-paketin siis saa tarvittaessa asennettua, pitää nuo kaikki kahdeksan pakettia ladata CRAN:sta.

Jos paketteja on suurempi määrä, on helpointa käyttää jotakin pakettien hallinnointiin tehtyä pakettia, kuten packrat, miniCRAN tai drat. Packrat-paketilla voi luoda muun muassa projektikohtaisen, muista irrallisen, paikallisen pakettikirjaston. Paketti miniCRAN puolestaan mahdollistaan paikallisen CRAN-tyyppisen pakettivaraston perustamisen. Sen tarjoamilla funktioilla on myös mahdollista selvittää pakettien riippuvuudet automaattisesti. Paketit drat ja miniCRAN täydentävät toiminnallisuuksiltaan toisiaan.

Pakettien packrat ja miniCRAN huonona puolena on kuitenkin se, että niilläkin on omia riippuvuuksia, jotka on ensin asennettava. Jos haluaa välttyä tältä ja pystyä asentamaan paketteja pelkkää perus-R-asennusta käyttäen, voi perustaa täydellisen, paikallisen CRAN-kopion. R-administraattorin käsikirja kuvailee suositellun tavan toteuttaa tällainen pakettivarasto.

Toinen tapa toteuttaa paikallinen pakettivarasto on ladata CRAN:sta (tai muista internetin pakettivarastoista) kaikki saatavilla olevat paketit. Tämä on helppo toteuttaa esimerkiksi seuraavasti (jos ollaan jo siinä polussa, johon paketit halutaan tallentaa):

setwd("C:/R-paketit/")
a <- available.packages()
download.packages(rownames(a), destdir=".", type="win.binary")

Tämän jälkeen paketit sisältävä kansio on varsin yksinkertaista muuntaa pakettivarastoksi luomalla R-administraattorin käsikirjassakin mainittu PACKAGES-tiedosto:

library(tools)
write.packages("C:/R-paketit")

Tämän jälkeet paketteja voi asentaa riippuvuuksineen ko. kansiosta seuraavasti (esimerkkinä paketti A3:

install.packages("A3", contriburl="file:///C:/R-paketit", type="win.binary")

Mikään yllämainituista tavoista ei ole täysin ongelmaton. Viimeisimpänä esitetyn menetelmän hyvänä puolena on, ettei se vaadi ylimääräisiä pakettiasennuksia toimiakseen, mutta pakettien asentaminen vaatii tavanomaisesti poikkeavan asennuskomennon käyttämistä. Asennuksia varten voi tietysti aina tehdä oman asennusfunktion, joka hoitaa polkujen asettamisen ym. käyttäjän puolesta.