Hjelp til R

R er et programmeringsspråk for å gjøre statistikk på datamaskiner. Det er et OpenSource-prosjekt for å erstatte det kommersielle Splus som instituttet brukte fram til sommeren 2003.

Hvordan kjøre R

R kan du starte ved å skrive R fra kommandolinja (husk stor bokstav) fra hvilken som helst maskin. R kan også kjøres fra emacs, da bruker du programpakken ESS - Emacs Speaks Statistics (tast M-x R i emacs for å starte R derifra). Husk at dersom du skal kjøre beregningen som tar fra noen minutter eller mer, så må du starte dem med nice, det vil si at du skriver nice foran på kommandolinja. Skal du kjøre via emacs, må du også starte emacs nice.

Hvis du bare vil kjøre en R-script i terminalen så kan du skrive:

 Rscript filnavn.R

Hvis du har startet R fra terminalen, kan du kjøre scriptet ved å skrive:

 source("filnavn.R")

Man går ut av en sesjon ved å skrive:

 quit()

Deretter blir man tilbudt om å lagre workspace image. Dette er opp til hver enkel, avhengig av hvor mye du faktisk bruker wokrspace tilstanden. For de som ikke vet hva det innebærer å lagre workspace image: R lagrer alt som blir skrevet inn i konsolen av variabler. Det er nok en fordel å lagre alt i .R filen, da man slipper å tenke på tap av data, spesielt hvis man kjører/redigerer samme script både i RStudio og Markov samtidig.

Hvis man ønsker å koble fra .RData-filen (hvor workspace tilstanden er lagret) skriver man

unlink(".RData")

Dette sletter .RData filen og når man starter programmet på nytt, har man mulighet å lagre et helt nytt tilstand i .RData-filen.

For å liste opp alle variabler/objekter i gjeldende sesjon:

 ls()

For å fjerne en eller flere variabler/objekter bruk:

 rm()

For å fjerne alle objekter kan man bruke:

 rm(list=ls())

For å se hvor ting lagres fra sesjonen kan man skrive:

 getwd()

For å endre working directory ( eller f.eks. i tilfeller hvor har flere prosjekter som befinner seg i forskjellige mapper) er det bare å skrive:

 setwd("ditmanskal")

Hvordan lagre plot fra en .R fil når man kjører den på markov?

!!Hvis man ønsker å kjøre scriptet uten å være innlogget, les mer om tmux her.

For å kjøre scriptet på markov skriver man:

 Rscript filnavn.R
 

For å sørge at plotet blir lagret kan man bruke følgende:

 filtype("filnavn.filtype")
 .
 .
 .
 plot(...)
 .
 .
 .
 dev.off()

Her kan filtype erstattes med f.eks pdf eller png.

Hvis man benytter seg av ggplot, er ggsave-funksjonen mer egnet. Dette gjør man ved å skrive:

  ggsave("filnavn.filtype")

Husk å ha library("ggplot2") på toppen av scriptet. Hvis man kjører et script som skal gi ut en variabel som output, så er det bare å sørge for at variabelen står på slutten for seg selv (slik som man ville ha "printet" den ellers), så dukker den opp i terminalen etter at scriptet har kjørt ferdig (enten man er i en tmux sesjon eller ikke).

Lange beregninger og bruk av Markov

Husk at beregninger som tar noen minutter bør kjøres nice, dette for å ikke stjele cpu-tid fra andre.

Å kjøre beregningen nice, vil medføre at beregningstiden blir ørlitegrann lengre. Men det er fordi vi vil at program som er interaktive (som pine og emacs) skal få kjøre fortest mulig, da dette har mest å si for hvor raskt andre brukere opplever datamaskinene.

Hvis man bruker Markov til å kjøre scriptet, med eller uten bruk av workspace:

Til de som bruker R vanlig hvor alt av variabler ligger lagret i scriptet

Det skal ikke være noe problem å kjøre scriptet på Markov. I menyen til venstre er det mulig å lese hvordan en åner en tmux sesjon etter å ha logget på med ssh til Markov, deretter er det bare å starte R og kjøre ønskede filer, eller skrive Rscript filnavn.R .

For de som aktivt bruker R Workspace i RStudio og ikke bare scriptet, anbefales følgende for at tap av data og variabler som ble lagret i workspacen blir unngått

På Markov, bruk:

 save.image("scriptnavn") 

I RStudio, bruk:

 load("workspacenavn") 

(eller bruke det fra menyen under Session→Load workspace). Omvendt hvis man skal gå fra RStudio til Markov.

Det er også viktig hvis man opererer på den samme workspacen samtidig (på Markov og i RStudio) så er det slik at det stedet man har lagret ting sist blir de gjeldende endringer. Så hvis man har lagret workspacen etter å ha kjørt scriptet på Markov og så lagret workspacen i RStudio har de endringene fra Markov ikke blitt med, da dette ikke er en automatisk oppdatering og det fungerer ikke på samme måte som googledoc. Så hvis man har lyst å jobbe i RStudio mens beregninger kjøres på Markov, er det lurt å lage en kopi og kjøre den på Markov for å deretter laste den inn i RStudio.

Programmet top

Mens du kjører beregninger, kan det anbefales å følge med på hvor mye cpu-tid du får med programmet top. Skriv 'top' fra kommandolinja på samme maskin du kjører R på, og se hvordan det går. Du ser også hvor mye cpu-tid din beregning får i forhold til andre jobber.

R-pakker

Du kan selv installere R-pakker. Pakkene havner da hjemmekatalogen din, i mappen R/library. Du kan gjøre dette på flere måter, for eksempel:

Alternativ 1

Dersom du får feilmelding om at en pakke "could not be loaded", betyr det at pakken du prøver å installere avhenger av en annen pakke, og at du må installere denne først.

Alternativ 2

  • Start R
  • Kjør kommandoen install.packages(), og velg land og pakkenavn fra vinduet som kommer opp

Eventuelt kan du bruke kommandoen install.packages("pakkenavn",dependencies=TRUE) for å laste ned den ønskede pakken direkte, og alle pakkene den avhenger av.

2022-09-19, Per Kristian Hove