Gå till index

Lilla Forskarskolan: Forskningsmetoder och Analys med R

0% färdig
0/0 Steps
  1. Analys och forskning med R och Posit (Rstudio)
  2. Grunderna i R och Rstudio
    7 Ämnen
  3. Importera, exportera, spara och ladda data
    5 Ämnen
  4. Strängar och regular expressions (regex)
    1 Ämne
  5. Bearbetning av data med dplyr
    12 Ämnen
  6. Visualisera och presentera
    14 Ämnen
  7. Explorerande och deskriptiva analyser
    6 Ämnen
  8. Prediktionsmodeller
    12 Ämnen
  9. Klassisk regressionsanalys
    8 Ämnen
  10. Machine learning (ML) och Artificiell Intelligens (AI)
    9 Ämnen
  11. Skapa prediktionsmodeller med Tidymodels
    6 Ämnen
  12. Hypotestester och epidemiologiska mått
    5 Ämnen
Avsnitt Progress
0% färdig

3.1 Vad är ett paket i R?

Ett paket innehåller funktioner som underlättar och effektiviserar ditt arbete. Paketen är således tillägg till R och de utökar funktionaliteten i R. Även om standardinstallationen av R har många kraftfulla verktyg så räcker inte dessa för att arbeta effektivt och bekvämt. Du behöver installera paket och dessa gör arbetet både roligare och lättare. I dagsläget finns cirka 18810 paket. Du kan installera vilket paket som helst inom några sekunder. Paketen genomgår validering av experter. Alla paket har öppen källkod som du kan granska när du vill (detta görs sällan av nybörjare).

3.1.1 Exempel på populära paket till R

  • ggplot2 för visualisering av data.
  • dplyr för bearbetning av data.
  • tidyr för bearbetning av data.
  • survival för överlevnadsanalys.
  • tidymodels för att skapa, jämföra och utvärdera prediktionsmodeller.
  • forcats för att hantera kategoriska variabler.
  • stringr för att hantera textsträngar.
  • purrr för att effektivisera användning av funktioner.

3.1.2 Hur man installerar paket i R

Installera och aktivera paket

Ett paket installeras bara en gång. Efter installationen finns paketet tillgängligt för R. För att använda paketet måste du aktivera det varje gång du startar R.

Innan du använder ett paket måste du installera och aktivera paketet. Ett paket installeras bara en gång men det måste aktiveras varje gång du startar R. Standardinstallationen av R kommer med flera paket förinstallerade. Dessa paket innehåller de mest grundläggande funktionerna, som till exempel grundläggande matematiska operationer.

För att installera ett paket använder du funktionen install.packages(). Här nedan installeras paketet dplyr. Observera att paketets namn skrivs med citattecken:

R
install.packages("dplyr")

3.1.3 Hur man uppdaterar ett R-paket.

Även om du bara installerar paketet en gång kan du behöva uppdatera det. Uppdateringar görs mer sällan och för de flesta paket räcker en eller ett par uppdateringar per år. Uppdatera paketet genom följande kommando:

R
update.packages("dplyr")

Du kan också uppdatera ett paket genom att installera det igen (R skriver då över den gamla versionen av paketet).

3.1.4 Code breaking updates

De allra flesta uppdateringar av paket görs på ett sådant sätt att gammal (existerande) kod skall fungera normalt. Det betyder att din kod kommer med största sannolikhet fungera även efter att du har uppdaterat ett paket. Uppdateringar kan därför göras utan större oro. Ibland görs dock större förändringar i paket vilket kan leda till att din kod inte längre fungerar efter en uppdatering. På engelska kallas detta code breaking updates. Du bör misstänka detta om din kod returnerar error-meddelanden efter en uppdatering. Det är nästan alltid enkelt att lösa dessa problem genom att granska paketets uppdaterade dokumentation. Som regel krävs väldigt små justeringar av koden för att det ska fungera igen.

3.1.5 Installera paket utan kommando

Du kan installera paket i R utan att skriva kommando. Det rekommenderas inte eftersom man bör ha alla händelser och kommandon dokumenterade i kronologisk ordning i koden. För fullständighetens skull följer ändock instruktioner för hur man installerar paket utan kod. I exemplet nedan, se Figure 3.1, installerar vi paketet rms:

  1. Klicka på fliken Packages i det nedre högra fönstret.
  2. Klicka på Install högst upp till vänster.
  3. Skriv namnet på paketet (rms) i sökrutan.
  4. Klicka på Install.
Figur 3.1. Installera paket manuellt i R.
Figur 3.1. Installera paket manuellt i R.

For att fortsätta den här kursen behöver vi installera flera paket. Du kan installera flera paket genom att upprepa funktionen install.packages() på flera rader, som följer:

R
install.packages("dplyr")
install.packages("ggplot2")
install.packages("rms")
install.packages("tidymodels")

Ovanstående kod bryter dock mot principen DRY, som står för Don’t Repeat Yourself. När du programmerar skall du minimera antal repetitioner. Bra kod är kortfattad och innehåller inte upprepningar. Därför skapar vi nu en vektor med namnen på paketen, och i funktionen install.packages() anger vi endast namnet på vektorn.

Observera att i koden nedan börjar vissa rader med #, vilket innebär att de är kommentarer. En kommentar är helt enkelt en anteckning som förklarar koden så att du kan och dina medarbetare kan förstå den. Kommentaren utvärderas inte av R.

R
# Med funktionen c() skapas en vektor med paket som önskar installeras
new_packages <- c("dplyr", "ggplot2", "rms", "tidymodels")

# installerar paketen
install.packages(new_packages)

Vi hade kunna förkorta detta ytterligare genom att hoppa över momentet då vektorn skapas, som följer:

R
install.packages(c("dplyr", "ggplot2", "rms", "tidymodels"))

Den sista varianten är kortfattad och innehåller inga upprepningar. Notera också att i det sista exemplet har vi låtit en funktion (install.packages()) omsluta en annan funktion (c()). Detta är tjusningen med R, nämligen möjligheten att bädda in funktioner i anda funktioner. Framgent kommer du upptäcka att detta möjliggör kraftfulla operationer.

3.1.6 Ladda paket i R

Varje gång du startar R så skapas en ny session. Detta innebär följande:

  1. Din Environment är tom.
  2. Endast enstaka paket som ingår i standardinstallationen är aktiverade.

Därför brukar varje script inledas med ett par rader som aktiverar de paket som skall användas. Det kan exempelvis se ut som följer i Figur 3.2. Notera att paket laddas med funktionen library().

Figur 3.2: Ett skript i R brukar inledas med ett par rader där nödvändiga paket laddas. Här installeras även ett paket innan paketen laddas. Det finns kommentarer i koden för att förtydliga händelserna.
Figur 3.2: Ett skript i R brukar inledas med ett par rader där nödvändiga paket laddas. Här installeras även ett paket innan paketen laddas. Det finns kommentarer i koden för att förtydliga händelserna.

Observera att citattecken inte behövs när paket laddas!

3.1.7 Error när paket aktiveras

R returnerar ett fel om du försöker ladda ett paket som inte är installerat. Vi kommer nu att försöka ladda ett paket som heter polish som inte är installerat:

R
library(polish)
Resultat
Error in library(polish): there is no package called 'polish'

3.1.7.1 Lyckad aktivering av paket

R returnerar ett meddelande när ett paket har laddats. Det här meddelandet kan innehålla viktig information. När paketet dplyr laddas ses följande information:

R
library(dplyr)
Resultat
Attaching package: ‘dplyr’

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union

Det finns viktig information i meddelandet ovan. Du kommer att se liknande meddelanden ofta och du måste vara uppmärksam på dessa. Meddelandet säger följande:

Detta innebär att om du använder funktionen filter() hädanefter så använder du filter() som finns i paketet dplyr och det samma gäller för övriga funktioner som maskerats av dplyr. Du kan dock fortfarande använda de funktioner som är maskerade, men det kräver att du specificerar paketets namn innan funktionens namn, som följer:

R
stats::filter()
stats::lag()

base::intersect()
base::setdiff()
base::setequal()
base::union()

Detta är metoden för att explicit berätta för R vilken funktion som du vill använda. Notera två kolon (:) mellan paketets och funktionens namn.

Maskerade funktioner

Vid aktivering av ett paket kan funktioner i andra paket maskeras. Det beror som regel på att funktionerna i de olika paketen har samma namn. För att använda maskerade funktioner måste paketets namn och två kolon (:) föregå funktionens namn.

3.1.7.2 Error vid användning av funktioner från paket som inte är aktiverade

R returnerar ett fel om du försöker använda funktioner i paket som inte laddas. I exemplet nedan försöker vi använda funktionen splined() som finns i ett paket som för närvarande inte är aktiverat.

R
# Vi ska leta efter siffran 5 i en följd av 9 siffror
# Strängar kan upptäckas med funktionen str_detect()
str_detect(string ='1 2 3 4 5 6 7 8 9',
           pattern = '5')
Resultat
Error in str_detect(string = "1 2 3 4 5 6 7 8 9", pattern = "5") : 
  could not find function "str_detect"

Det här felmeddelandet betyder helt enkelt att R inte kan hitta funktionen i något av de paket som för närvarande är aktiverade. För att åtgärda detta måste du antingen aktivera paketet (med funktionen library()) eller specificera paketets namn (och två kolon) innan funktionens namn, som följer:

R
stringr::str_detect(string ='1 2 3 4 5 6 7 8 9', pattern = '5')
Resultat
[1] TRUE

3.1.8 Pacman laddar och installera flera paket samtidigt

R har ingen inbyggd funktion för att aktivera flera paket samtidigt. Lyckligtvis finns funktionen p_load() i paketet pacman som gör det möjligt att aktivera flera paket samtidigt och dessutom installera paket som saknas.

Installera pacman med följande kommando:

R
install.packages("pacman")

Därefter kan du aktivera flera paket samtidigt med p_load(). Om du saknar något av paketen kommer pacman att installera dem:

R
p_load(survival, ggplot2, lubridate)

3.1.9 Andra paket i R

Alla paket som är granskade och godkända finns på CRAN.

3.2.0 Tidyverse: Ett revolutionerande paket

R har traditionellt betraktats som ett svårt språk. Detta är tämligen lätt att förstå när man granskar hur omständligt det kan vara att göra en så trivial sak som att filtrera rader en tabell. Ponera att du har en tabell med observationer på män och kvinnor och du vill nu bara behålla männen för ytterligare analyser. I traditionell R-kod skrivs detta som följer:

R
my_data_frame[my_data_frame$Sex == 'Male',]
  • my_data_frame är namnet på vår data frame
  • Sex är en kolumn i vår data frame
  • Symbolen $ används för att referera en kolumn i en data frame.
    • my_data_frame$Sex innebär att vi vill använda kolumnen Sex i my_data_frame.
    • Vi använder klammer ([]) för att filtrera rader så att alla Males behålls.
    • I klammern skriver vi ett kommatecken (,) efter Males för att klargöra att det är rader vi filtrerar. Efter kommatecknet skrivs inget såvida man inte vill välja kolumner också).

Detta är ett av många exempel på R-kod som de flesta har svårt att skriva och läsa. Tidyverse innehåller paket som förenklar programmering i R. Faktum är att tidyverse gör det möjligt för vem som helst att läsa och skriva R-kod. Nedan följer samma kod med dplyr, som är ett av paketen som ingår i tidyverse:

R
filter(my_data_frame, Sex=="Males")

Koden ovan är lätt att skriva och lätt att begripa. För att installera tidyverse skriver du följande kommando:

R
install.packages("tidyverse")

Detta kommer att ladda ner och installera tidyverse från CRAN. Tidyversepackage innehåller flera paket:

  • ggplot2
  • tibble
  • tidyr
  • readr
  • purrr
  • dplyr

3.2.0 Bioconductor: Paket för medicinsk forskning

Bioconductor är troligtvis världens mest använda mjukvara för beräkningar och analyser inom medicinsk grundforskning. Bioconductor består av ett stort antal paket som är särskilt utvecklade för medicinsk forskning. Hela listan på paket finner du här.

Installera paket från Bioconductor

Grundpaketen i Bioconductor installeras med följande kommando:

R
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install()

Installera specifika paket, exempelvis “GenomicFeatures” och “AnnotationDbi”, med kommandot:

R
BiocManager::install(c("GenomicFeatures", "AnnotationDbi"))

Om du har installerat Bioconductor kan du även lista alla tillgängliga paket med kommandot:

R
BiocManager::available()

3.2.1 ROpenSci

ROpenSci utgörs av erfarna forskare och mjukvaruutvecklare som också utvecklar paket särskilt för medicinsk forskning. Klicka här för att se samtliga paket.

R Open Sci