R Basis

Wat is R

R is een open-source programmeertaal en softwareomgeving voor statistische berekeningen, datamanipulatie en datavisualisatie.

We gebruiken R, maar werken in RStudio.

RStudio

Screenshot van RStudio

Projecten

Het is verstandig om in projecten te werken. In dit geval maken we project rworkshop. Bij het aanmaken van dit project maakt RStudio een nieuwe map rworkshop aan, en plaatst daar het bestand rworkshop.Rproj in. Als je dit bestand aanklikt, opent RStudio meteen in de juiste werkmap.

Projecten

Werkmap

De werkmap is de map waarin R als eerste zoekt naar bestanden. Werk je in een project, dan is de werkmap automatisch goed ingesteld.

Werk je zonder project, dan stel je de werkmap in met Session/Set Working Directory/To Source File Location (of een andere keus).

Werkmap instellen

Bronbestanden

Je geeft R opdrachten in de vorm van code. Deze code kun je in de console intypen, maar het is verstandiger om code in een bronbestand te schrijven. Maak hiervoor een nieuw .R bestand aan in je werkmap. In dit bestand schrijf je R code, en R kan het bestand vervolgens uitvoeren.

  • Voer één regel of een selectie uit met Ctrl + Enter
  • Regels die beginnen met # zijn commentaar: R slaat ze over

Bronbestanden

Basisbegrippen in R

  • R is case sensitive: hoofdletters en kleine letters maken uit
  • R werkt met objecten. We maken objecten met de <- operator, en kunnen daarna met de objecten werken

code.R

# Rekenen met getallen
a <- 1
b <- 2
totaal <- a + b
totaal
[1] 3
half <- a / 2
half
[1] 0.5
e <- a * b + totaal
e
[1] 5
# Werken met tekst
naam <- 'Albart'
achternaam <- 'Coster'
vnaam <- paste(naam, achternaam)
vnaam
[1] "Albart Coster"

Typen objecten

Objecten hebben een type. De belangrijkste zijn numeric, character, logical en factor. Met class() zie je het type.

code.R

class(totaal)
[1] "numeric"
class(vnaam)
[1] "character"
# logical: TRUE of FALSE, vaak het resultaat van een vergelijking
groot <- totaal > 2
groot
[1] TRUE
class(groot)
[1] "logical"
# factor: tekst met een vast aantal categorieën
ras <- factor(c('HF', 'Jersey', 'HF'))
ras
[1] HF     Jersey HF    
Levels: HF Jersey
levels(ras)
[1] "HF"     "Jersey"
# NA betekent: ontbrekende waarde
geen <- NA
is.na(geen)
[1] TRUE

Datastructuren in R

  • De vorige objecten bevatten één element
  • In R kunnen we ook objecten maken met meerdere elementen. Hier behandelen we vectoren en data.frames

code.R

productie <- c(30, 30, 40, 50)
productie
[1] 30 30 40 50
dieren <- c('dier1', 'dier2', 'dier3', 'dier4')
dieren
[1] "dier1" "dier2" "dier3" "dier4"
df1 <- data.frame(dieren = dieren, productie = productie)
df1
  dieren productie
1  dier1        30
2  dier2        30
3  dier3        40
4  dier4        50
df1[1, 1]           # rij 1, kolom 1
[1] "dier1"
df1$productie       # een hele kolom
[1] 30 30 40 50
df1$dieren[1]       # eerste element van een kolom
[1] "dier1"

Selecteren uit vectoren en data.frames

Met [ ] selecteer je elementen, op positie of met een voorwaarde. Dit gebruiken we later veel om data te filteren in Shiny.

code.R

productie[2]                    # tweede element
[1] 30
productie[productie > 35]       # elementen groter dan 35
[1] 40 50
df1[df1$productie > 35, ]       # rijen waar productie > 35
  dieren productie
3  dier3        40
4  dier4        50
nrow(df1)                       # aantal rijen
[1] 4

Functies in R

In R worden operaties uitgevoerd met operators (zoals + en -) en functies (zoals sum() en mean()). Je kunt ook zelf functies maken.

code.R

x <- 1 + 2
y <- x - 2

som <- sum(x, y)
gem <- mean(c(x, y, som))
gem
[1] 2.666667
# Zelf een functie maken
efunctie <- function(n = 100, min = 0, max = 1){
  rnum <- runif(n, min = min, max = max)
  gemiddelde <- mean(rnum)
  stdev <- sd(rnum)
  c(gemiddelde = gemiddelde, sd = stdev)
}

set.seed(123)   # zorgt dat iedereen dezelfde 'toevallige' getallen krijgt
efunctie()
gemiddelde         sd 
 0.4985590  0.2849953 
efunctie(1000, 0, 1000)
gemiddelde         sd 
  495.3345   285.4083 

Hulp vragen

Weet je niet hoe een functie werkt? Vraag de helppagina op:

code.R

?mean
help(mean)

De helppagina verschijnt in RStudio rechtsonder, in het tabblad Help.

Packages

R wordt uitgebreid met packages. Een package installeer je één keer, en laad je in elke sessie waarin je het gebruikt:

code.R

install.packages("shiny")   # één keer: package installeren
library(shiny)              # elke sessie: package laden

In deze workshop gebruiken we onder andere het package shiny.

Opdrachten

  1. Maak object lft met je leeftijd
  2. Maak object naam met je naam en achternaam met je achternaam
  3. Bereken hoeveel maanden (of dagen!!) je hebt geleefd
    • Tip: Sys.Date() geeft de datum van vandaag, as.Date("1980-05-17") maakt een datum
  4. Maak een vector met namen, namen
  5. Maak er ook een met (geschatte) leeftijden, lfts
  6. Maak data.frame mensen met twee kolommen, namen en leeftijden
    • Tip: de kolomnaam mag anders zijn dan de naam van de vector: leeftijden = lfts
  7. Wie in mensen is ouder dan 30?

Uitwerkingen

🔒 Uitwerking vergrendeld