Hei,

Velkommen til den første numeriske øvelsen i BIO104 - Komparativ fysiologi. Som en del av kurset skal du lære å bruke R/RStudio for å

  • lage og importere et enkelt datasett
  • lage en tabell,
  • tegne et plot,
  • sette alt sammen til en fullstending rapport.

Øvelsen skal utføres i R/RStudio. Vi på bioST@TS har utviklet denne siden for å hjelpe deg med å komme i gang med R/RStudio og å løse de numeriske oppgavene i denne øvelsen.

1 Om R/RStudio

1.1 Litt om R

R er både et programmeringsspråk og en programvare for statistiske beregninger og grafikk. R er et kraftig og fleksibelt verktøy som gjør jobben med data analyse enkelt og produktivt.

I motsetning til de fleste programvarene som du kjenner bruker R/RStudio kommandoer for å utføre oppgaver. Det betyr at du skal skrive kode for å håndtere data og for å lage tabeller og plotter.

Ved hjelp av denne siden skal du lære å bruke språket R for å skrive enkle “setninger” som transformerer data til tabeller og figurer som skal brukes i din rapport.

1.2 Et alternativt grensesnitt

R kommer med sitt eget grafiske grensesnitt som gjenkjennes som minimalistisk, med begrenset funksjonalitet, få knapper og få menyer. Dermed installerer de fleste en alternativt grensesnitt som fortsatt kjører R, men som virker mer produktivt og brukervennlig. Det finnes flere sånne programvarer. Den som vi anbefaler og viser til heter RStudio.

Merk at RStudio brukes i kombinasjon med R, ikke istedenfor R. Derfor må du installere begge på din maskin (se seksjon 2.1). RStudio tar over R sitt grensesnitt, men alle beregninger utføres av R “i bakgrunnen”. Dette forklarer hvorfor du skal ofte lese “R/RStudio” på denne siden.

1.3 Hvorfor jobber vi i R/RStudio?

Det finnes mange fordeler med å ta R/RStudio i bruk:

  • Først og fremst er R fri og open-source, og kan installeres på de fleste maskinene (Windows, Mac, Linux, osv).
  • R kan utføre veldig enkle numeriske oppgaver (for eksempel kan R brukes som en helt vanlig kalkulator og regne ut 2+2, (2+3)*4, logaritme (log(42)), eller kvadratrot (sqrt(42)), samt veldig avanserte statistiske analyser (f. eks. for å bygge data modeller basert på millioner av observasjoner).
  • R er i konstant utvikling; det kan nedlastes utvidelser (som kalles for “R-pakker” eller “R-packages”) som utvider funksjonalitetene.
  • R brukes av mange i akademia, og spesielt i biologi. Dermed finnes det garantert noen i nærheten av deg som kan hjelpe til når du er i trøbbel.
  • Fordi R brukes av mange i hele verden og i mange disipliner, finnes det et stort sammfunn online som kan hjelpe deg (det forumet Stack Overflow er godt kjent blant R-brukere)

1.4 R/RStudio i biologiemner

Det er ikke bare BIO104 som tar bruk av R/RStudio. Flere emner i bachelorprogrammet bruker det òg, f. eks. STAT101 og BIO201. I tillegg blir R/RStudio sentralt i de obligatoriske emnene BIO300A og BIO300B i masterprogrammet.
Derfor er det lurt å bli kjent med R så fort som mulig.

1.5 Få hjelp med R/RStudio

Det finnes mange steder der du kan finne hjelp og informasjon om R/RStudio:

  • nettsiden vår bioST@TS har en dedikert seksjon hvor du skal lære mye om både R/RStudio og statistikk.
  • oraklene på biORAKEL er kjent med R/RStudio og kan tilby deg hjelp når du trenger det.
  • codeRclub er et møtested for de som lærer eller jobber med R/RStudio. Alle er velkommen og kan søke hjelp hos oss. Vi møtes på fredager fra kl.14:00 til 16:00 på Tunet (4. etasje på biologen, bygg A, Thormøhlensgate 53A, UiB) og på Zoom (ta kontakt med Richard Telford for å få lenken). Kom på besøk om du sitter fast eller lurer på noe.
  • på nettet finner du mange fora der du får løsning på problemene dine. Ofte er det “bare” å google. Mange spørsmål stilles på Stack Overflow, og mange gode svar finnes der òg.

2 Kom i gang med R/RStudio

Nå er det på tid å starte jobben. Først skal du installere R og RStudio, og hente de filene som vi skal jobbe med. Deretter skal vi åpne “prosjektet” og bli kjent med grensesnittet til RStudio.


2.1 Installer R og RStudio

Programvarene kan du laste ned direkte fra nettsiden til The Comprehensive R Archive Network og RStudio fra RStudio sin nettside. Pass på at du velger den versjonen som passer din maskin.

2.2 Last ned filene

Nå skal vi hente de filene som du trenger til øvelsen. Du finner de nødvendige filene på MittUiB under filer i BIO104. Mappen heter BIO104_Lab.zip.

Last ned denne filen og ekstraher hele mappen på harddisken din. Velg et lurt sted, f.eks .\Mine dokumenter\BIO104\ eller lignende.

2.3 Første steg i RStudio

Stort sett kommer du til å starte R/RStudio ved å åpne et prosjekt. Et prosjekt består av en mappe som inneholder en .Rproj-fil og eventuelt andre filer (data filer, skript, osv). I denne øvelsen heter filen Bio104_tutorial.Rproj. Når du dobbelklikker på filen, så åpnes den direkte i RStudio. Da får du se dette grensesnittet (Figur 2.1):
_Skjermdump av RStudio sitt grensesnitt._

Figure 2.1: Skjermdump av RStudio sitt grensesnitt.


Øverst i vinduet finner du hovedmenyen med mange funksjoner:

_Skjermdump av hovedmenyen i RStudio._

Figure 2.2: Skjermdump av hovedmenyen i RStudio.


Via denne menyen kan du bl.a. lage ny fil, åpne eksisterende filer eller prosjekter, lagre endringer i filer, osv.

Grensesnittet (se Figur 2.1) deles i 3 områder:

  • et stort område til venstre der man finner fanene Console, Terminal og Jobs,
  • et mindre område opp til høyre med de fanene Environment, History, Connections and Tutorial,
  • et siste område ned til høyre med de fanene Files, Plots, Packages, Help and Viewer.


Her skal vi fokusere på de fanene skrevet i fet skrift, nemlig Files (se seksjon 2.3.3) og Console (se seksjon 2.3.2). Dessuten skal vi ta bruk av skript (se seksjon 2.3.1).


2.3.1 Skript

Et skript er et arbeidsdokument der du skriver kode, kommentarer og tekst. Du kan starte jobben i R/RStudio med et blankt skript, eller åpne et forhåndsfylt skript. I denne øvelsen skal vi jobbe i en forhåndsfylt fil som heter Bio104_Template_rapport.Rmd. Vi kommer tilbake til det senere i seksjonen 3.

Hvis du ønsker å opprette et nytt skript for å jobbe med noe annet eller trene på koding, så trykker du på CTRL + Shift + N (⌘ + Shift + N), eller velger File > New File > R Script i menyen øverst. Da dukker det opp et nytt ark opp til venstre. Dette arket heter Untitled1 og er helt blankt (se Figur 2.3).

_Opprettelse av et nytt skript._

Figure 2.3: Opprettelse av et nytt skript.


I dette skriptet kan du skrive kode. Når du ønsker å utføre kode, så trykker du på Run (se Figur 2.4).
_Utfør koden med knappen_ Run.

Figure 2.4: Utfør koden med knappen Run.

2.3.2 Console

Fanen Console finnes du nederst til venstre i RStudio. Konsolen er “motoren i R”. Det er konsolen som utfører koden som du sender ut fra skriptet.

Figur 2.5 viser en enkel kodelinje (mean(1:10)) i skriptet (øverste grønne boks) og det tilsvarende resultatet i konsolen (nederste grønne boks):

_Koden i skriptet utføres i konsolen_

Figure 2.5: Koden i skriptet utføres i konsolen


Koden vises i blått på en linje som starter på >. Derimot skrives resultatet av mean(1:10) i svart på en linje som starter på [1].

2.3.3 Files

Fanen Files finner du nederst til høyre i RStudio (se Figur 2.6). Files er en filutforsker som viser innholdet på prosjektmappen. Her skal du finne filen Bio104_Template_rapport.Rmd som vi skal snart ta i bruk.

_Den fanen_ Files _er filutforskeren i RStudio._

Figure 2.6: Den fanen Files er filutforskeren i RStudio.


Hvis du ønsker å lagre endringer i skriptet ditt, så går du tilbake til fanen Untitled1 og trykker på CTRL + S (⌘ + S). Oppgi et filnavn og trykk på Save. Din fil vises nå i fanen Files (NB: som standard lagres nyopprettede filer i prosjektmappen).

Hvis du ønsker å importere filer i prosjektmappen, så klikker du på More > Show Folder in New Window i menyen til Files (se Figur 2.7). Et nytt vindu åpnes som lar deg velge filene som skal importeres.
_Skjermdump av menyen i fanen_ Files.

Figure 2.7: Skjermdump av menyen i fanen Files.

2.3.4 Installere R-pakker via konsolen

R-pakker (altså “packages”) er utvidelser som legger til funksjoner og funksjonaliteter i R. Noen pakker gir muligheten til å rydde datasett, noen lar deg tegne fine plotter, osv.

I den øvelsen trenger vi pakkene tidyverse og rmarkdown. tidyverse samler funskjoner fra mange mindre pakker som f. eks. ggplot2, tidyr and dplyr som lar deg tegne fine plott, rydde og sortere datasett, og filtrere dataene. Pakkene installeres via konsolen ved hjelp av funksjonen install.packages(). Kopiér og lim inn den følgende linjen direkte i konsolen, og trykk Enter:

install.packages(c("tidyverse", "rmarkdown"))


install.packages() tar seg av å nedlaste og installere pakker i R/RStudio. Dessuten bruker du funksjonen library() for å aktivere de installerte pakkene når de trenges. Da kan du kopiere og lime inn denne koden i konsolen:

library(tidyverse)
library(rmarkdown)

2.3.5 Kort om skript og konsolen

Som vi så i seksjon 2.3.1, er et skript like en notisblokk. Der kan du skrive akkurat det du vil uten at R/RStudio skal utføre noe som helst før du ber den gjøre det.


Du kan for eksempel skrive den følgende koden:

mean(1:10)

Denne enkle koden regner gjennomsnittet av tallene fra 1 til 10. Det forklares på denne måten:

  • 1:10 er et uttryk som betyr “alle de tallene fra og med 1 til og med 10”,
  • mean( ) er en funskjon som ber R regne ut gjennomsnittet av alt som finnes mellom parentesene ( ).


Når du har skrevet koden i skriptet og er klar til å utføre den, så trykker du på knappen Run (se Figur 2.4) for å sende koden til konsolen. Alternativt kan du trykke CTRL + ALT + Enter (⌘ + ⌥ + Enter) for å sende hele koden til konsolen.

Konsolen viser resultatet av koden i skriptet.
_Koden i skriptet utføres i konsolen._

Figure 2.8: Koden i skriptet utføres i konsolen.

2.3.6 Unngå å skrive kode i konsolen

Det er helt mulig å skrive kode direkte i konsolen. Når du gjør det, så trykker du bare på Enter for å utføre den. Resultatet vises da på den nesten linjen.

Imidlertid er det ikke anbefalt å gjøre det. Når du utfører kode i konsolen, så blir den ikke lagret. Det betyr at du blir nødt til å taste den inn igjen hver gang du skal utføre den, eller redigere den. Dette er relativt uproblematisk når man skriver så enkle kodelinjer som mean(1:10) eller library(tidyverse). Men det blir fort krevende og frustrerende når man skal skrive kode over flere linjer, eller utvikle koden steg for steg. Derfor anbefales det på det sterkeste å alltid skrive kode i et skript, ikke direkte i konsolen.

3 Kjør øvelsen

Her skal vi gå sammen gjennom hele øvelsen. Du skal lære å:

  • lage et datasett i Excel og lagre det i CSV-format
  • importere datafilen i CSV-format i R/RStudio ved bruk av read_csv2(),
  • omorganisere datasettet for å kunne jobbe videre med det,
  • lage en tabell som viser dataene,
  • tegne et linjeplott som viser resultatet av eksperimentet.
  • sette inn referanser

Det skal gi deg all kunnskapen som du trenger for å skrive din rapport.


3.1 Datainnsamling

Vi starter øvelsen i Excel. Her lager du en tabell som viser absorbansmålingene fra labeksperimentet, samt tidspunkter når målingene ble utført.

Lag 3 kolonner som heter Time, Control og Diauxic:

  • i Time skriver du tiden (i minutter) der absorbans ble målt, fra 0 til 180.
  • i Control skriver du målingene fra kontrollen. Disse har vi registrert for deg.
  • i Diauxic skriver du de eksperimentelle målingene som du har registrert selv.

I utgangspunktet skal du ha en tabell som ligner mye på figuren 3.1

_Datasett med absorbansmålinger fra labeksperimentet._

Figure 3.1: Datasett med absorbansmålinger fra labeksperimentet.


3.1.1 Lagre filen i CSV-format

Excel filer skrives i et format som er upraktisk når man prøver å hente dataene fra en annen programvare. For at R skal kunne lese og forstå datasettet, må man først konvertere filen til CSV-formatet (Comma-Separated Values) som er mye lettere å håndtere. I CSV-formatert filer ligger verdiene delt med et symbol, vanligvis et komma , eller semi-kolon ;.


Når du har registrert alle målingene, så lagrer du filen ved å gå til Fil > Lagre, eller Fil > Lagre en kopi…

_Slik lagrer du filen._

Figure 3.2: Slik lagrer du filen.


I neste steg skal du velge filformatet CSV UTF-8, navngi filen (f. eks. diauxi_data) og lagre den i mappen \data\ som du må først opprette i den samme mappen som du finner :
_Datasett med absorbansmålinger fra labeksperimentet._

Figure 3.3: Datasett med absorbansmålinger fra labeksperimentet.

3.1.2 Sjekk filen i et redigeringsverktøy

Hvis du er nysgjerrig og åpner filen i et vanlig tekstredigeringsverktøy (Notepad eller lignende), så ser du at alle målingene er delt med ;.

_Datasett med absorbansmålinger fra labeksperimentet._

Figure 3.4: Datasett med absorbansmålinger fra labeksperimentet.

NB: du forventer sikkert at CSV-formatet bruker komma , til å dele verdier. Men siden komma , er desimaltegnet som brukes i det norske systemet , må Excel bruke semi-kolon en annen symbol, nemlig ; som erstatning.

3.2 Mal til rapporten

Gå til fanen Files og klikk på filen Bio104_Template_rapport.Rmd. Filen åpnes øverst til venstre og viser malen til rapporten.

Malen ser sånn ut:

_Skjermdump av malen til rapporten._

Figure 3.5: Skjermdump av malen til rapporten.


Denne filen er skrevet i Rmarkdown-format som gjør redigeringsprosessen pålitelig. Ved bruk av den forhåndsinstallerte R-pakken knitr og knappen Knit (se den røde boksen i Figur 3.6), produserer RStudio et ferdigformatert dokument med figurer, titler og tekst.

_Knappen_ Knit _skriver ut rapporten._

Figure 3.6: Knappen Knit skriver ut rapporten.


Hvis du trykker allerede nå på Knit, så får du dette dokumentet:

_Skjermdump av rapporten produsert av knitr._

Figure 3.7: Skjermdump av rapporten produsert av knitr.


3.2.1 Topptekst

Vi går tilbake til malen i RStudio. Øverst i malen finner du et området som både starter og slutter på --- (se Figur 3.8). Dette er toppteksten. Målet med toppteksten er å vise tittelen, navnet på forfatteren, navnet på labpartneren, gruppenummeret, lagnummeret og dato øverst i rapporten.
_Her skal du redigere toppteksten._

Figure 3.8: Her skal du redigere toppteksten.

Legg til tittelen og alt som trenges mellom " ". Pass på å ikke fjerne " "! Den siste linjen med output: html_document må du la stå uendret.

3.2.2 Setup

For at R/RStudio skal kunne lage figurer, må du først aktivere R-pakken tidyverse. Det gjøres ved å skrive kode i denne første “code chunk-en”.

NB: chunks er områder med grå bakgrunn som brukes til å utføre kode (f. eks. til å installere/aktivere pakker, behandle data og produsere figurene). Hver chunk starter på ```{r } og slutter på ```.
Her finner du den første chunk-en i malen:

_Eksempel på en code chunk - setup_

Figure 3.9: Eksempel på en code chunk - setup

Den heter “setup” (```{r setup, include=FALSE}). Målet med den er å aktivere tidyverse slik at den er klar til bruk gjennom hele øvelsen.

3.2.3 Introduksjon

I denne seksjonen skal du skrive en introduksjon til studien. Les og følg instruksjonene i malen. Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.


3.2.3.1 Nyttige tekstformateringer

  • Man kan enkelt lage tekst i kursiv med å bruke understrek (_) eller stjerne (*) før og etter teksten (f. eks. _tekst_ or *tekst*).

  • For å sette in fet skrift bruker man to understreker (__tekst__) eller stjernesymboler (**tekst**).

  • Tekst som er omgitt av ~ vil konverteres til senket skrift (f.eks. H~2~SO~4~ gir H2SO4), og lignende vil to hatter (^) gi hevet skrift (f.eks. Fe^2+^ gir Fe2+).

  • For å lage et ord/setning med understrek så må man skrive <ins> før setningen og </ins> på slutten.

  • Lenker til nettsider kan lages med å skrive [tekst](link), f.eks. RStudio, og syntaksen for å sette inn bilder er nesten lik, med bare et utropstegn foran ![Figurtekst](filsti/til/bilde). Man kan også justere størrelsen på bildet med å legge til ![Figurtekst](filsti/til/bilde){width=40%}

  • For at Rmarkdown skal skjønne at man vil gjøre et linjeskift/linjehopp så må man bruke en omvendt skråstrek\. Når R møter dette symbolet vil den automatisk hoppe til neste linje. Mellom avsnitt vil man gjerne ha enda større ‘luftrom’, da kan man bruke to omvendt skråstreker. Én etter setningen, og én nedenfor, men det går ikke ann å plassere to ved siden av hverandre. \
    \

3.2.4 Metode

I denne seksjonen skal du beskrive hvordan eksperimentet ble utført og hvordan målingene ble registrert. Les og følg instruksjonene i malen. Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

3.2.5 Resultater

I denne seksjonen skal du presentere resultatene fra både kontrollen og eksperimentet. Les og følg instruksjonene i malen. Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

Du skal legge til en figur som viser resultatet i form av et linjeplott. Til dette skal vi bruke tre code-chunks: collectingdataset, convert og plot:

  • collectingdataset skal brukes til å importere datasettet i R og gi det et navn.
  • convert skal konvertere datasettet i en ryddig tabell som kan behandles av funksjoner i tidyverse.
  • plot skal tegne linjeplottet med resultatene fra eksperimentet.


3.2.5.1 Chunk collectingdataset

Her skal vi skrive koden som importerer datafilen i R/RStudio ved hjelp av en dedikert funskjon. Hvis du har fulgt instruksene på denne siden, heter datafilen diauxi_data.csv og ligger nå i \data mappen. Stien til datafilen er da data/diauxi_data.csv. Husk den, den skal brukes i funksjonen. Hvis du har brukt et annet navn eller mappe, så blir du nødt til å tilpasse stien.

Det finnes mange funksjoner som kan importere data i R. Her skal vi bruke read_csv2() som er en del av readr i tidyverse. read_csv2() er laget for å importere CSV-filer der ; blir brukt for å dele dataene og , er desimaltegnet. (NB: hvis du åpner din datafil og oppdager at . er desimaltegnet og , er symbolet som deler dataene, så skal du bruke read_csv() istedenfor).

Koden i chunk-en blir som følger:

# Start by reading your data set
growth <- read_csv2(file = "data/diauxi_data.csv")

Her ser du at vi har skrevet growth <- foran koden. Det brukes til å navngi datasettet i R. Her er det logisk å kalle datasettet growth, men du kan gi det et annet navn om du ønsker. Poenget med å gi et navn er å kunne bruke datasettet igjen og igjen, bare ved å skrive det navnet istedefor å skrive hele kodelinjen i chunken hver gang. For eksempel kan vi nå utføre koden growth for å lese hele datasettet i R:

# folgende kode viser datasettet
growth
## # A tibble: 19 × 3
##     Time Control Diauxic
##    <dbl>   <dbl>   <dbl>
##  1     0    0.2     0.21
##  2    10    0.2     0.21
##  3    20    0.21    0.22
##  4    30    0.23    0.24
##  5    40    0.25    0.26
##  6    50    0.3     0.31
##  7    60    0.4     0.41
##  8    70    0.5     0.51
##  9    80    0.65    0.6 
## 10    90    0.8     0.65
## 11   100    0.95    0.66
## 12   110    1.1     0.67
## 13   120    1.3     0.67
## 14   130    1.45    0.7 
## 15   140    1.6     0.75
## 16   150    1.7     0.85
## 17   160    1.75    0.95
## 18   170    1.76    1.1 
## 19   180    1.77    1.25


I rapporten skal du fylle ut koden i chunken {r collectingdataset} med alt som trenges:

# Start by reading your data set
... <- read_csv2(file = "...")


3.2.5.2 Chunk convert

Nå skal vi konvertere datasettet slik at det blir lesbart av funksjonene som skal tegne plottet.

Vi gjør det ved bruk av R-pakken tidyr som er inkludert i tidyverse. Grunnen for at dette gjøres er at R og tidyverse jobber bare med tidy data, i.e. ryddig data, der hver variabel utgjør en kolonne, og hver observasjon utgjør en rad (se følgende figur 3.10):

_Bruk_ tidyr _til å rydde datasettet - kilde: [tidyr.tidyverse.org - RStudio - CC BY SA](https://tidyr.tidyverse.org/)_

Figure 3.10: Bruk tidyr til å rydde datasettet - kilde: tidyr.tidyverse.org - RStudio - CC BY SA


Datasettet som vi bruker (se figur 3.1) viser målinger i to kolonner (Control og Diauxic), og hver rad viser to målinger; derfor innses datasettet som uryddig, og må omorganiseres.


Planen er å lage ny tabell som:

  • heter growth_sorted (det gjør vi med growth_sorted <-)
  • viser kategoriene Control og Diauxic i en key kolonne som heter Treatment (det gjør vi med key = "Treatment" i gather()), og samler alle tilsvarende målingene i en value kolonne som heter Absorbance (det gjør vi med value = "Absorbance" i gather()) basert på verdiene som fins i den 2. og 3. kolonnen (det gjøre vi med argumentene 2, 3 i gather())
  • sortere data iht. tidspunktene i Time (det gjør vi med arrange(Time)).


Koden skrives sånn:

growth_sorted <- growth %>% 
  gather(key = "Treatment", value = "Absorbance", 2, 3) %>%
  arrange(Time)


Her ser du at vi har brukt %>% flere ganger. Dette symbolet heter “pipe” og kan oversettes til “deretter”. Vi bruker den for å skrive en “kodesetning” der stegene følger hverandre på en logisk måte. Setningen leses: start med datasettet growth, deretter omorganiser alle kategoriene og målingene i to kolonner som heter Treatment og Absorbance, deretter sorter hele tabellen iht. Time.

Nå ser det nye datasettet sånn ut:

# folgende kode viser datasettet
growth_sorted
## # A tibble: 38 × 3
##     Time Treatment Absorbance
##    <dbl> <chr>          <dbl>
##  1     0 Control         0.2 
##  2     0 Diauxic         0.21
##  3    10 Control         0.2 
##  4    10 Diauxic         0.21
##  5    20 Control         0.21
##  6    20 Diauxic         0.22
##  7    30 Control         0.23
##  8    30 Diauxic         0.24
##  9    40 Control         0.25
## 10    40 Diauxic         0.26
## # … with 28 more rows


Det nye datasettet har 3 variabler: Time, Treatment og Absorbance, og 38 rader med enkle observasjoner.

I rapporten skal du fylle ut koden i chunken {r convert} med alt som trenges:

# Sort the data
... <- ... %>% 
  gather(key = "...", value = "...", ..., ...) %>%
  arrange(...)


3.2.5.3 Chunk plot

Nå som vi har importert og konvertert datasettet, er det på tid å lage plottet. Det skal gjøres ved bruk av funksjonen ggplot() i R-pakken ggplot2 som er inkludert i tidyverse.


Plottet skal:

  • hente og bruke data fra growth_sorted (det gjøres med growth_sorted %>%)
  • vise variabelen Time på x-aksen og Absorbance på y-aksen (det gjøres med aes(x = ..., y = ...))
  • vise dataene i form av linjeplott (det gjøres med + geom_line())
  • representere hver kategorie i variabelen Treatment med eget linjeplott (det gjøres med aes(group = ...)).

Syntaksen er relativt enkel:

growth_sorted %>% 
  ggplot(aes(x = Time, y = Absorbance, group = Treatment)) +
  geom_line() #This draws the line between datapoints
Figur 1A: mitt første plott.

Figure 3.11: Figur 1A: mitt første plott.

Dette er et ok plott, men det kan forberdres på mange måter, f. eks. ved å legge til eller endre farger, symboler og mye annet.


3.2.5.4 Automatiske farger

ggplot() lar deg tilpasse farger til kategoriene i Treatment ved bruk av funksjonen aes() og argumentet color =. Her e det bare å erstatte group = med color =.


3.2.5.5 Symboler

ggplot() lar deg legge til symboler til kategoriene i Treatment ved bruk av en ekstra linje med geom_point() og argumentet shape = i aes(). Størrelsen på symbolene endres med size = i geom_point(). Også, det er ingenting i veien for at shape = skal brukes i kombinasjon med color =.

Her er et eksempel som viser bruk av både farger og symboler:

growth_sorted %>% 
  ggplot(aes(x = Time, y = Absorbance, color = Treatment, shape = Treatment)) +
    geom_point(size = 2) + # This will draw the points
    geom_line() # This will draw the line
Figur 1B: mitt nye plott.

Figure 3.12: Figur 1B: mitt nye plott.


Ikke glem pluss-tegnet + til slutten av hver linje (bortsett fra den siste). Her merker du sikkert at en forklaringsboks dukker opp til høyre. Den kommer automatisk med shape = eller color =, men tydeligvis ikke med group =.


3.2.5.6 Aksetitler

Aksetitler endres med funksjonen labs(x = "navn på x-aksen", y = "navn på y-aksen"). Pass på å ikke fjerne " ".


3.2.5.7 Theme (utseende)

Du kan endre hele utseende (bakgrunn, akselinjer, osv) ved bruk av en av de funksjonene i theme_...() familien. Denne siden viser deg navnene på dem. Mellom parentesene i den funksjonen theme_() kan du skrive base_size = og et nummer (f. eks. 15) for å endre tekststørrelsen.


3.2.5.8 Manuelle farger

Ønsker du å velge fargene selv, kan du legge til en ekstra linje med funksjonen scale_color_manual(values=c("farge1", "farge2")) der farge1 og farge2 er farger definert enten med navn eller fargekode. Navn og fargekode finner du her.

NB: bruker du farger, så må du pass på at alle (inkludert fargeblinde folk) kan se de, ellers blir de umulig å tolke resultatene dine. Bruker du gråtoner, må du passer på at det er nok kontrast.


3.2.5.9 Håndplukket symboler

Ønsker du å velge symbolene selv, kan du legge til en ekstra linje med funksjonen scale_shape_manual(values=c("symbol1", "symbol2")) der symbol1 og symbol2 er koder i denne tabellen:

_Disse symbolene kan du bruke i plottet ditt_

Figure 3.13: Disse symbolene kan du bruke i plottet ditt


Her er et eksempel på et mer avansert plott:

growth_sorted %>% 
  ggplot(aes(x = Time, y = Absorbance, color = Treatment, shape = Treatment)) +
    geom_point(size=2) +
    geom_line() +
    scale_color_manual(values=c("darkorchid4", "darkolivegreen") ) +
    scale_shape_manual(values=c(18, 8)) +
    labs(x = "Time (minutes)", y = "Absorbance") +
    theme_classic(base_size = 15)
_Mitt fantastisk plott._

Figure 3.14: Mitt fantastisk plott.


Husk: for hver ny linje i koden må forrige linjen avsluttes med pluss-tegnet +.

I rapporten skal du fylle ut koden i chunken {r plot} med alt som trenges (vær kreativ!):

... %>% 
  ggplot(aes(x = ..., y = ... ), color = ..., shape = ...) +
    geom_point(size = ...) +
    geom_line(...) +
    labs(...) +
    theme_put.a.theme.here(base_size = ...)

Husk å legge til figurteksten via argumentet fig.cap=" ".


3.2.5.10 Størrelse og plassering

Man kan justere størrelse på figurer og velge hvordan den skal plasseres i dokumentet ved å legge til fig.height = TALL, fig.width = TALL, fig.align = "center" i code chunk options. For eksempel:

{r plotsize, fig.height = 3, fig.width = 5, fig.align = "center", fig.cap="ADD FIGURE TEXT HERE"}


Hvis man bare ønsker å skalere ned størrelse på figuren kan man bruke out.width="TALL%" istedenfor. For eksempel:

{r plotsize, out.width="50%", fig.align = "center", fig.cap="ADD FIGURE TEXT HERE"}

3.2.6 Diskusjon

I denne seksjonen skal du tolke resultatene. Er det noe overraskende, uforventet eller rart med dataene? Har du en forklaring for det? Her kan du gi din mening. Husk å linke informasjonen fra introduksjonen til diskusjonen og argumenter for hvilke molekylære mekanismer som er involvert i vårt system ved å bruke forskningslitteratur.

Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.

3.2.7 Referanser

I denne delen skal du oppgi referanser og kilder som du har brukt i teksten til rapporten.

Det er mulig å bruke en funksjon i R som heter citr som vil hjelpe deg å enkelt sette inn referanser og som vil automatisk generere en referanseliste når man knitter dokumentet. Hvis du ikke har brukt citr før må du laste ned denne pakken og restarte R:

devtools::install_github("crsh/citr")

Hvis du trenger litt hjelp med å skrive den delen, kan du gå til denne bioSKRIV-siden.


3.2.7.1 BIO104_referanser.bib

For å sette inn referanser må man ha en fil som inneholde de referansene en ønsker bruke. Dette kan være en BIBTEX fil med fil-endelsen .bib og er en vanlig tekstfil som kan enkelt åpnes i et standard tekstredigeringsprogram eller direkte i RStudio. Denne filen må spesifiseres øverst i Rmarkdown-templatet som bibliography.


Vi har allerede gjort dette for dere og har linket bibliography til filen som heter BIO104_referanser.bib (Figur 3.15). Denne filen inneholder alle referansene som du finner i mappen Litteratur i tillegg til del-kapittelet fra Brock.

_Linke bibliography til BIO104_referanser.bib filen._

Figure 3.15: Linke bibliography til BIO104_referanser.bib filen.


3.2.7.2 Sette inn referanser

For å sette inn en referanser i teksten må man først klikke på Addins (Figur 3.16) etterfulgt av Insert citation

_Hvordan sette inn referanser i teksten._

Figure 3.16: Hvordan sette inn referanser i teksten.


I neste vindu velger man én eller flere referanser som man ønsker å sette inn og til slutt klikker man Insert citation (Figur 3.17). Om man ønsker å referere til en artikkel uten at referansen står i parantes så kan man huke vekk In parentheses.

_Sette inn referansen._

Figure 3.17: Sette inn referansen.


Når man nå trykker knit så vil referansen dukke opp i teksten og referanselisten oppdateres.


Mer informasjon om referanser i Rmarkdown finner du her.


3.2.7.3 Legge til andre referanser

Hvis du ønsker å legge til andre referanser som ikke er inkludert i .bib filen, så kan du enten skrive de inn manuelt i .bib filen, eller så kan du laste ned en ferdig-generert .bib fil, slik vi har vist nedenfor.


På nettsiden til Universitetsbiblioteket kan du enkelt finne vitenskaplige artikler og laste ned en slik bib-fil (se Figur 3.18). Du finner først artikkelen ved å bruke søkemotoren, så klikker du på siteringstegnet ", velger BIBTEX og laster ned filen.

_Hvordan laste ned en referanser i BIBTEX format._

Figure 3.18: Hvordan laste ned en referanser i BIBTEX format.


Deretter kan du åpne filen i et tekstredigeringsprogram eller i RStudio, kopiere innholdet og lime inn på slutten av BIO104_referanser.bib tekstfilen (Figur 3.19).

_Hvordan bib-filen ser ut._

Figure 3.19: Hvordan bib-filen ser ut.


Det er også mulig å bruke et siteringsverktøy som Zotero eller Mendeley for å lage en slik bib fil (som automatisk oppdateres), men dette går vi ikke gjennom her.


3.2.7.4 Referanser med sidetall

Når man skal referere en bok eller et bok-kapittel, så skriver man gjerne hvilke(t) sidetall kilden er hentet fra, slik at man enkelt skal kunne slå opp og finne hvor denne påstanden kommer i fra. Hvis man for eksempel sitrer biologiboken uten sidetall, så er det umulig for noen andre å kunne bla seg gjennom nesten 1400 sider for å finne hvor i boken informasjonen kommer fra.


Heldigvis er det veldig enkelt å sette inn sidetall i referanser. Det gjøres ved å skrive inn sidetallene etter man har satt inn referansen.


For eksempel hvis vi setter in referansen til delkapittelet i “Brock Biology of Microorganisms”, så vil den se slik ut:

[@madiganBrockBiologyMicroorganisms2017]


For å få med sidetall, så legger man til et komma og skriver sidetallene:

[@madiganBrockBiologyMicroorganisms2017, p 210-211]


Som vil da se slik ut når man knitter dokumentet:

(Madigan et al., 2017, p 210-211)


3.2.7.5 Referanseliste med sidetall

For å legge til sidetallene en har brukt fra en bok eller bok-kapittel i referanselisten så må man inn i .bib filen og legge til f. eks. pages={210-215}, (Figur 3.20).

_Hvordan bib-filen ser ut._

Figure 3.20: Hvordan bib-filen ser ut.


3.2.7.6 Plassering av referanselisten

Som standard blir referanselisten generert på slutten av dokumentet når det knittes. Dette er ikke alltid ønskelig da man gjerne har annen informasjon som skal komme etter refeanselisten, slik som supplementerende informasjon. Vi kan velge hvor refereanselisten skal genereres ved å bruke koden <div id="refs"></div>, som vist nedenfor:

# References

<div id="refs"></div>

# Appendix


3.2.7.7 Siteringsstil (CSL)

Det finnes mange ulike siteringsstiler man kan velge mellom, men en siteringsstil som er mye brukt er APA (American Psychological Association 6th edition). Det er denne vi bruker i vår øvelse og du finner den med filnavnet apa.csl.


Du kan finne og laste ned hvilken som helst siteringsstil her på Zotero. Denne referansefilen spesifiseres øverst i Setup seksjonen av dokumentet som csl: apa.csl (csl = Citation Style Language).

3.2.8 Tilleggsmateriale

Her skal du vise en tabell med dataene som ble samlet inn og brukt til å tegne plottet. Koden skal skrives i chunken ```{r table}.


Det finnes flere muligheter; den enkleste måten er å ta i bruk funksjonen kable() i R-pakken knitr (siden pakken er ikke aktivert, skriver vi knitr::kable()). Syntaksen er enkel:

knitr::kable(growth_sorted, caption = "Her kan du beskrive hva denne tabellen inneholder.")
Table 3.1: Her kan du beskrive hva denne tabellen inneholder.
Time Treatment Absorbance
0 Control 0.20
0 Diauxic 0.21
10 Control 0.20
10 Diauxic 0.21
20 Control 0.21
20 Diauxic 0.22
30 Control 0.23
30 Diauxic 0.24
40 Control 0.25
40 Diauxic 0.26
50 Control 0.30
50 Diauxic 0.31
60 Control 0.40
60 Diauxic 0.41
70 Control 0.50
70 Diauxic 0.51
80 Control 0.65
80 Diauxic 0.60
90 Control 0.80
90 Diauxic 0.65
100 Control 0.95
100 Diauxic 0.66
110 Control 1.10
110 Diauxic 0.67
120 Control 1.30
120 Diauxic 0.67
130 Control 1.45
130 Diauxic 0.70
140 Control 1.60
140 Diauxic 0.75
150 Control 1.70
150 Diauxic 0.85
160 Control 1.75
160 Diauxic 0.95
170 Control 1.76
170 Diauxic 1.10
180 Control 1.77
180 Diauxic 1.25


Denne tabellen er relativt lang på grunn av strukturen og mengden med data. Det fins en alternativ måte hvis du skal levere din rapport i html-format. Du kan lage en dynamisk tabell med flere sider ved bruk av paged_table() i R-pakken rmarkdown (siden pakken er ikke aktivert, skriver vi rmarkdown::paged_table()). Fordelen er at tabellen tar mye mindre plass. Syntaksen er også enkel:

rmarkdown::paged_table(growth_sorted)

Husk å legge til figurteksten via argumentet caption = " ". Hvis du trenger litt hjelp med å skrive figurteksten, kan du gå til denne bioST@TS-siden.

3.3 Skriv ut rapporten

Når rapporten din er ferdig, så er det bare å trykke på knappen Knit (Figur 3.21). Hvis alt er korrekt, så åpnes rapporten i et nytt vindu. Les gjennom dokumentet. Finner du noe feil, så kan du gå tilbake til malen og rette det.

_Trykke på knit._

Figure 3.21: Trykke på knit.


Hvis det ligger noen feil i koden din, skal fanen R Markdown (ved siden av Console) vise feilmelding istedenfor å skrive ut rapporten. Les feilmeldingen, rett feilen(e), og trykk på Knit igjen.


Liker du rapporten din akkurat som den er, så trykker du på Open in Browser øverst i vinduet. Rapporten åpnes da i nettleseren din. Trykk på CTRL + P (⌘ + P) for å skrive ut rapporten. Du kan f. eks. skrive den ut i pdf-format. Den er klar til innlevering.

_Lagre som PDF._

Figure 3.22: Lagre som PDF.

Gratulerer med din første rapport i R/RStudio!