R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Työhakemiston asettaminen interaktiivisesti

R:n käyttöä Windows:ssa haittaa pieni, mutta aavistuksen rasittava piirre: työhakemiston vaihtaminen on kankeaa. Periaatteessa työhakemisto on helppoa vaihtaa vaikkapa valikoista Menu->Choose Dir… tai komennolla setwd(choose.dir()), mutta molemmat avaavat hakemistoselaimen, jossa pitää C-levyn juuuren kautta hakeutua työpöydälle (C:->Users->käyttäjä->Desktop). Turhia klikkauksia!

Jos kansiossa on tiedostoja, on eräs helpompi tapa siirtyä oikeaan kansioon komento setwd(dirname(file.choose())). Nyt on enää kaksi hiiren näpäytystä polun asettamiseksi, mutta komento on pidempi.

Pysyvämpiä ratkaisuja on muutamia. Ensinnäkin työhakemiston voi asettaa R:n pikakuvakkeeseen suoraan (hiiren oikean napii takaa löytyvät pikakuvakkeen ominaisuudet). Oletusarvoisesti se osoittaa käyttäjän ”My Documents”-kansioon, mutta sen voi vaihtaa osoittamaan vaikka työpöydälle. Toiseksi ylläolevan komennon voi laittaa R:n asetustiedostoon Rprofile.site seuraavasti:

wd<-function() {
   setwd(dirname(file.choose()))
}

Tämän jälkeen R:ssä voi työtiedostoa vaihtaa interaktiivisesti käyttäen komentoa wd().

Toinen vastaavankaltainen ratkaisu on käyttää tcltk:n ominaisuuksia:

library(tcltk)
setwd(tclvalue(tkchooseDirectory()))

Tämä ratkaisu toimii, vaikkei kohdekansiossa olisikaan yhtäkään tiedostoa.

Näiden muutosten jälkeen oma Rprofile.site-tiedostoni näyttää seuraavalta:

# Things you might want to change
 
# options(papersize="a4")
# options(editor="notepad")
# options(pager="internal")
 
# set the default help type
# options(help_type="text")
  options(help_type="html")
 
# set a site library
# .Library.site <- file.path(chartr("\\", "/", R.home()), "site-library")
 
# set a CRAN mirror
# local({r <- getOption("repos")
#       r["CRAN"] <- "http://my.local.cran"
#       options(repos=r)})
 
# Give a fortune cookie, but only to interactive sessions
# (This would need the fortunes package to be installed.)
#  if (interactive()) 
#    fortunes::fortune()
 
wd<-function() {
   setwd(dirname(file.choose()))
}
 
wdt<-function() {
   require(tcltk)
   setwd(tclvalue(tkchooseDirectory()))
}

Taas tuli hiukkasen virtaviivaistettua tekemistä. Minuutti päivässä on puoli päivää vuodessa.