Ga naar hoofdinhoud

40 R-programmeer interviewvragen en -antwoorden voor alle niveaus

Leer de 40 fundamentele R-programmeer interviewvragen en de antwoorden daarop voor alle senioriteitsniveaus: instap-, gemiddeld en gevorderd.
Bijgewerkt 2 okt 2026  · 15 min lezen

Verken met AI

ChatGPTClaudePerplexity

Om je kansen op succes in een R-sollicitatie te vergroten, is het altijd handig om vooraf te weten welke vragen je mogelijk kunt krijgen als je op zoek bent naar een baan—of welke vragen je een kandidaat kunt stellen als je hiring manager of recruiter bent.

Dit artikel behandelt 40 fundamentele R-programmeer interviewvragen en de antwoorden daarop voor alle senioriteitsniveaus, plus enkele algemene interviewvragen. Voor het gemak zijn alle technische vragen onderverdeeld in drie niveaus: instap-, gemiddelde en gevorderde vragen.

Als extra bronnen voor je voorbereiding op een R-programmeer interview kun je de volgende handige blogs en cursussen bekijken:

Algemene R-programmeer interviewvragen

Aan het begin van een R-interview kan een interviewer een kandidaat enkele algemene, niet-technische vragen stellen over hun algehele ervaring met R. Bijvoorbeeld:

  • Hoe lang werk je al met R?
  • Wat voor soort taken voer je uit in R?
  • Hoe schat je je vaardigheidsniveau in R in?

Als je op zoek bent naar een baan, denk dan vooraf na over deze en vergelijkbare vragen en bereid je antwoorden voor. Maak je geen zorgen als je nog geen echte werkervaring in R hebt: het beschrijven van je stage in R-programmeren of je individuele of groeps-R-projecten die je tijdens je studie hebt afgerond, werkt prima.

Bovendien, als je solliciteert naar een instapfunctie, verwacht je interviewer niet per se uitgebreide (of zelfs enige) werkervaring in R. Onthoud dat, aangezien je voor dit gesprek bent uitgenodigd, het bedrijf je cv sowieso aantrekkelijk vond.

Instapniveau R-programmeer interviewvragen

Laten we beginnen met enkele van de basis technische R-interviewvragen die je potentiële werkgever kan stellen. Deze vereisen dat je de basis onder de knie hebt en enige praktische ervaring hebt met het gebruik van R.

1. Wat is R en wat zijn de belangrijkste kenmerken?

R is een programmeertaal en -omgeving die veel wordt gebruikt voor het oplossen van data science-problemen en is speciaal ontworpen voor statistisch rekenen en datavisualisatie. De belangrijkste kenmerken zijn:

  • Open source
  • Geïnterpreteerd (d.w.z. het ondersteunt zowel functioneel als objectgeoriënteerd programmeren)
  • Zeer uitbreidbaar dankzij de grote verzameling data science-packages
  • Functioneel en flexibel (gebruikers kunnen eigen functies definiëren en diverse parameters van bestaande functies afstellen)
  • Compatibel met veel besturingssystemen
  • Eenvoudig te integreren met andere programmeertalen en frameworks
  • Maakt krachtige statistische berekeningen mogelijk
  • Biedt diverse datavisualisatietools voor publicatiewaardige grafieken
  • Uitgerust met de command-line interface
  • Ondersteund door een sterke online community

2. Wat zijn enkele nadelen van het gebruik van R?

  • Niet-intuïtieve syntaxis en daardoor een steile leercurve, vooral voor beginnende programmeurs
  • Relatief traag
  • Inefficiënt geheugenverbruik
  • Inconsistente en vaak moeilijk leesbare documentatie van packages
  • Sommige packages zijn van lage kwaliteit of slecht onderhouden
  • Mogelijke beveiligingszorgen door het open-source karakter

3. Noem en definieer enkele basisdatatypen in R.

Er zijn een paar datatypen in R, waaronder: 

  1. Numeric—decimale getallen.
  2. Integer—gehele getallen.
  3. Character—een letter, cijfer of symbool, of een combinatie daarvan, tussen dubbele of enkele aanhalingstekens.
  4. Factor—categorieën uit een vooraf gedefinieerde set mogelijke waarden, vaak met een intrinsieke volgorde.
  5. Logical—de Booleaanse waarden TRUE en FALSE, onder de motorkap respectievelijk weergegeven als 1 en 0.

4. Noem en definieer enkele basisdatastructuren in R.

  1. Vector—een eendimensionale datastructuur voor het opslaan van waarden van hetzelfde datatype.
  2. List—een multidimensionale datastructuur voor het opslaan van waarden van elk datatype en/of andere datastructuren.
  3. Matrix—een tweedimensionale datastructuur voor het opslaan van waarden van hetzelfde datatype.
  4. Data frame—een tweedimensionale datastructuur voor het opslaan van waarden van elk datatype, maar elke kolom moet waarden van hetzelfde datatype bevatten.

5. Hoe importeer je data in R?

Base R biedt essentiële functies voor het importeren van data:

  • read.table()—de meest algemene functie van base R voor het importeren van data, neemt tabeldata met elk type veldscheidingstekens, inclusief specifieke zoals |.

  • read.csv()—comma-separated values (CSV)-bestanden met . als decimaalscheider.

  • read.csv2()—semicolon-separated values-bestanden met , als decimaalscheider.

  • read.delim()—tab-separated values (TSV)-bestanden met . als decimaalscheider.

  • read.delim2()—tab-separated values (TSV)-bestanden met , als decimaalscheider.

In de praktijk kan een van deze functies worden gebruikt om tabeldata te importeren met elk type veld- en decimaalscheidingsteken: ze gebruiken voor de gespecificeerde bestandsformaten is vooral een kwestie van conventie en standaardinstellingen. Bijvoorbeeld, dit is de syntaxis van de eerste functie: read.table(file, header = FALSE, sep = "", dec = "."). De andere functies hebben dezelfde parameters met andere standaardinstellingen die altijd expliciet kunnen worden overschreven.

De tidyverse-packages readr en readxl bieden andere functies voor het importeren van specifieke bestandsformaten. Elk van die functies kan verder worden fijngesteld door verschillende optionele parameters te zetten.

readr

  • read_tsv()—tab-separated values (TSV)-bestanden.

  • read_fwf()—fixed-width-bestanden.

  • read_log()—weblogbestanden.

  • read_table(), read_csv(), read_csv2() en read_delim()—equivalent aan de base R-functies.

readxl

  • read_excel()—Excel-bestanden.

  • read_csv()—equivalent aan de functie uit de base R-functies.

Wil je dieper duiken in data laden in R, bekijk dan de tutorial How to Import Data Into R.

6. Wat is een package in R, en hoe installeer en laad je packages?

Een R-package is een verzameling functies, code, data en documentatie, die een uitbreiding vormt op de R-programmeertaal en ontworpen is voor het oplossen van specifieke soorten taken. R wordt geleverd met een aantal vooraf geïnstalleerde packages, en andere packages kunnen door gebruikers worden geïnstalleerd vanuit repositories. De meest populaire gecentraliseerde repository met duizenden verschillende R-packages heet de Comprehensive R Archive Network (CRAN).

Om een R-package rechtstreeks vanaf CRAN te installeren, geven we de pakketnaam tussen aanhalingstekens door aan de functie install.packages(), als volgt: install.packages("package_name"). Om meer dan één package in één keer vanaf CRAN te installeren, gebruiken we een tekstreeksvector met de pakketnamen tussen aanhalingstekens, als volgt: install.packages(c("package_name_1", "package_name_2"). Om een R-package handmatig te installeren, moeten we eerst het pakket als zip-bestand op onze computer downloaden en vervolgens de install.packages() function draaien:

install.packages("path_to_the_locally_stored_zipped_package_file", repos=NULL, type="source")

Om een geïnstalleerd R-package te laden in de werkende R-omgeving, kunnen we de functies library() of require() gebruiken. Elk daarvan neemt de pakketnaam zonder aanhalingstekens en laadt het pakket, bijv. library(caret). Het gedrag van deze functies verschilt echter wanneer ze het benodigde pakket niet kunnen vinden: library() geeft een fout en stopt de uitvoering, terwijl require() een waarschuwing geeft en de uitvoering voortzet.

7. Hoe maak je een data frame in R?

1. Van één of meer vectoren van gelijke lengte—met de functie data.frame():

df <- data.frame(vector_1, vector_2)

2. Van een matrix—met de functie data.frame():

df <- data.frame(my_matrix)

3. Van een lijst met vectoren van gelijke lengte—met de functie data.frame():

df <- data.frame(list_of_vectors)

4. Van andere data frames:

  • Om data frames horizontaal te combineren (alleen als de data frames hetzelfde aantal rijen hebben en de records hetzelfde zijn en in dezelfde volgorde staan) —met de functie cbind():

df <- cbind(df1, df2)
  • Om data frames verticaal te combineren (alleen als ze een gelijk aantal identiek benoemde kolommen van hetzelfde datatype hebben die in dezelfde volgorde voorkomen) —met de functie rbind():

df <- rbind(df1, df2)

8. Hoe voeg je een nieuwe kolom toe aan een data frame in R?

  1. Met het $-symbool:
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df$col_3 <- c(5, 1, 18, 16)
print(df)

Output:

  col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16
  1. Met vierkante haken:
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df["col_3"] <- c(5, 1, 18, 16)
print(df)

Output:

  col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16
  1. Met de functie cbind():

df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df <- cbind(df, col_3=c(5, 1, 18, 16))
print(df)

Output:

 col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16

In elk van de drie gevallen kunnen we een enkele waarde of een vector toekennen of de nieuwe kolom berekenen op basis van de bestaande kolommen van dat data frame of andere data frames.

9. Hoe verwijder je kolommen uit een data frame in R?

1. Met de functie select() van het dplyr-package uit de tidyverse-collectie. De naam van elke kolom die je wilt verwijderen, geef je door met een minteken ervoor:

df <- select(df, -col_1, -col_3)

Als we in plaats daarvan te veel kolommen hebben om te verwijderen, is het logischer om de resterende kolommen te behouden in plaats van de kolommen van interesse te verwijderen. In dat geval is de syntaxis vergelijkbaar, maar de namen van de te behouden kolommen krijgen geen minteken:

df <- select(df, col_2, col_4)

2. Met de ingebouwde functie subset() van base R. Als we slechts één kolom hoeven te verwijderen, geven we aan de parameter select van de functie de kolomnaam met een minteken ervoor. Om meer dan één kolom te verwijderen, geven we aan deze parameter een vector met de benodigde kolomnamen met een minteken ervoor:

df <- subset(df, select=-col_1)
df <- subset(df, select=-c(col_1, col_3))

Als we in plaats daarvan te veel kolommen hebben om te verwijderen, is het logischer om de resterende kolommen te behouden in plaats van de kolommen van interesse te verwijderen. In dat geval is de syntaxis vergelijkbaar, maar wordt er geen minteken toegevoegd:

df <- subset(df, select=col_2)
df <- subset(df, select=c(col_2, col_4))

10. Wat is een factor in R?

Een factor in R is een specifiek datatype dat categorieën (ook wel levels) accepteert uit een vooraf gedefinieerde set mogelijke waarden. Deze categorieën lijken op characters, maar worden onder de motorkap opgeslagen als integers. Vaak hebben zulke categorieën een intrinsieke volgorde. Bijvoorbeeld, een kolom in een data frame met de opties van de Likert-schaal om meningen te beoordelen ("helemaal mee eens", "eens", "enigszins mee eens", "noch eens noch oneens", "enigszins oneens", "oneens", "helemaal mee oneens") moet van het type factor zijn om deze intrinsieke volgorde vast te leggen en die adequaat weer te geven op categorische grafieken.

11. Wat is RStudio?

RStudio is een open-source IDE (integrated development environment) die veel wordt gebruikt als grafische front-end om met de R-programmeertaal te werken vanaf versie 3.0.1. Het heeft veel handige functies die het erg populair maken onder R-gebruikers:

  • Gebruiksvriendelijk
  • Flexibel
  • Multifunctioneel
  • Maakt het aanmaken van herbruikbare scripts mogelijk
  • Houdt operationele geschiedenis bij
  • Autocompletion van code
  • Biedt gedetailleerde en uitgebreide hulp over elk object
  • Biedt eenvoudige toegang tot alle geïmporteerde data en gebouwde objecten
  • Maakt het makkelijk om te schakelen tussen terminal en console
  • Maakt voorbeeldweergave van plots mogelijk
  • Ondersteunt efficiënt projectaanmaak en -deling
  • Kan worden gebruikt met andere programmeertalen (Python, SQL, enz.)

Wil je meer weten over wat RStudio is en hoe je het installeert en gaat gebruiken, volg dan de RStudio Tutorial.

12. Wat is R Markdown?

R Markdown is een gratis en open-source R-package dat een auteuringsframework biedt voor het bouwen van data science-projecten. Hiermee kunnen we één .rmd-bestand schrijven dat verhaaltekst, code en grafieken combineert en dit bestand vervolgens renderen in een gekozen outputformaat. De belangrijkste kenmerken van R Markdown zijn:

  • De resulterende documenten zijn deelbaar, volledig reproduceerbaar en van publicatiekwaliteit.
  • Een breed scala aan statische en dynamische outputs en formaten, zoals HTML, PDF, Microsoft Word, interactieve documenten, dashboards, rapporten, artikelen, boeken, presentaties, applicaties, websites, herbruikbare templates, enz.
  • Eenvoudige versiebeheertracking.
  • Meerdere programmeertalen worden ondersteund, waaronder R, Python en SQL.

13. Hoe maak je een door de gebruiker gedefinieerde functie in R?

Om een door de gebruiker gedefinieerde functie in R te maken, gebruiken we het sleutelwoord function en de volgende syntaxis:

function_name <- function(parameters){
    function body 
}
  1. Functienaam—de naam van het functie-object dat wordt gebruikt om de functie aan te roepen na de definitie.
  2. Functieparameters—de variabelen, gescheiden door een komma en tussen haakjes geplaatst, die bij elke aanroep van de functie aan daadwerkelijke argumentwaarden worden gekoppeld.
  3. Functiebody—een codeblok tussen accolades met de bewerkingen die in een vooraf gedefinieerde volgorde op de invoerargumenten worden uitgevoerd telkens wanneer we de functie aanroepen. Gewoonlijk bevat de functiebody de instructie return() (of meerdere) die de uitvoer van de functie teruggeeft, of de instructie print() (of meerdere) om de uitvoer te printen.

Een voorbeeld van een eenvoudige door de gebruiker gedefinieerde functie in R:

my_function <- function(x, y){
    return(x + y)
}

14. Noem enkele populaire datavisualisatie-packages in R.

  • ggplot2—het populairste R-datavisualisatiepackage voor het maken van een grote verscheidenheid aan grafieken.
  • Lattice—voor het weergeven van multivariate data als een betegeld paneel (trellis) met meerdere grafieken.
  • Plotly—voor het maken van interactieve, publicatiewaardige grafieken.
  • highcharter—voor eenvoudige dynamische plotting, biedt veel flexibele functies, plugins en thema’s; maakt het mogelijk om verschillende R-objecten met één functie te plotten.
  • Leaflet—voor het maken van interactieve kaarten.
  • ggvis—voor het maken van interactieve en sterk aanpasbare grafieken die in elke browser toegankelijk zijn via de infrastructuur van Shiny.
  • patchwork—voor het combineren van meerdere grafieken, meestal van verschillende types, in één afbeelding.

Gemiddeld niveau R-programmeer interviewvragen

Voor meer ervaren beoefenaars is het waarschijnlijk dat de interviewer vragen stelt die meer gedetailleerde kennis van R vereisen. Hier zijn er een paar om je op voor te bereiden:

15. Hoe ken je een waarde toe aan een variabele in R?

  1. Met de toekenningsoperator <-, bijv. my_var <- 1—de meest gebruikelijke manier om een waarde aan een variabele toe te kennen in R.

  2. Met de gelijkheidsoperator =, bijv. my_var = 1—voor het toekennen van waarden aan argumenten binnen een functiedefinitie.

  3. Met de rechtsgerichte toekenningsoperator ->, bijv. my_var -> 1—kan in pipes worden gebruikt.

  4. Met de globale toekenningsoperators, links (<<-) of rechts (->>), bijv. my_var <<- 1—voor het maken van een globale variabele binnen een functiedefinitie.

16. Wat zijn de vereisten voor het benoemen van variabelen in R?

  • Een variabelenaam kan een combinatie zijn van letters, cijfers, punten en underscores. Hij mag geen andere symbolen bevatten, inclusief spaties.

  • Een variabelenaam moet beginnen met een letter of een punt.

  • Als een variabelenaam met een punt begint, mag deze punt niet gevolgd worden door een cijfer.

  • Gereserveerde woorden in R (TRUE, for, NULL, enz.) mogen niet als variabelenaam worden gebruikt.

  • Variabelenamen zijn hoofdlettergevoelig.

In de cursus Writing Efficient R Code vind je verdere best practices voor het schrijven van code in R.

17. Welke soorten lussen bestaan er in R, en wat is de syntaxis van elk type?

1. For-lus—itereert over een reeks zo vaak als de lengte ervan (tenzij de statements break en/of next worden gebruikt) en voert dezelfde set bewerkingen uit op elk item van die reeks. Dit is het meest voorkomende type lussen. De syntaxis van een for-lus in R is als volgt:

for (variable in sequence) {
    operations
}

2. While-lus—voert dezelfde set bewerkingen uit totdat aan een vooraf gedefinieerde logische voorwaarde (of meerdere voorwaarden) is voldaan—tenzij de statements break en/of next worden gebruikt. Anders dan for-lussen weten we niet vooraf hoeveel iteraties een while-lus zal uitvoeren. Voor we een while-lus draaien, moeten we een variabele (of meerdere) toekennen en vervolgens de waarde ervan bij elke iteratie binnen de lusbody bijwerken. De syntaxis van een while-lus in R is als volgt:

variable assignment

while (logical condition) {
    operations
    variable update
}

3. Repeat-lus—voert herhaaldelijk dezelfde set bewerkingen uit totdat aan een vooraf gedefinieerde breakvoorwaarde (of meerdere) is voldaan. Om zo’n voorwaarde te introduceren, moet een repeat-lus een if-statement codeblok bevatten, dat op zijn beurt het break-statement in de body moet hebben. Net als bij while-lussen weten we niet vooraf hoeveel iteraties een repeat-lus zal uitvoeren. De syntaxis van een repeat-lus in R is als volgt:

repeat { 
    operations 
    if(break condition) {
        break
    }
}

Je kunt meer lezen over Lussen in R in onze aparte tutorial.

18. Hoe aggregeer je data in R?

Om data te aggregeren in R gebruiken we de functie aggregate(). Deze functie heeft de volgende essentiële parameters, in deze volgorde:

  • x—het te aggregeren data frame.

  • by—een lijst met factoren om op te groeperen.

  • FUN—een aggregatiefunctie om de samenvattende statistieken voor elke groep te berekenen (bijv. mean, max, min, count, sum).

19. Hoe merge je data in R?

1. Met de functie cbind()—alleen als de data frames hetzelfde aantal rijen hebben en de records hetzelfde zijn en in dezelfde volgorde staan:

df <- cbind(df1, df2)

2. Met de functie rbind() om data frames verticaal te combineren—alleen als ze een gelijk aantal identiek benoemde kolommen van hetzelfde datatype hebben die in dezelfde volgorde voorkomen:

df <- rbind(df1, df2)

3. Met de functie merge() om data frames te mergen op een gemeenschappelijke kolom, meestal een ID-kolom:

  • Inner join:
df <- merge(df1, df2, by="ID")
  • Left join:
df <- merge(df1, df2, by="ID", all.x=TRUE)
  • Right join:
df <- merge(df1, df2, by="ID", all.y=TRUE)
  • Outer join:
df <- merge(df1, df2, by="ID", all=TRUE)

4. Met de functie join() van het dplyr-package om data frames te mergen op een gemeenschappelijke kolom, meestal een ID-kolom:

df <- join(df1, df2, by="ID", type="type_of_join")

De parameter type neemt een van de volgende waarden aan: inner, left, right of full.

20. Hoe concateneer je strings in R?

We kunnen twee of meer strings in R samenvoegen met de functies paste() of cat(). De eerste aanpak is populairder. Beide functies nemen elk aantal strings aan om te concatenëren en kunnen ook een optionele parameter sep (naast enkele andere optionele parameters) aannemen—een teken of tekenreeks die de aaneengeplakte strings in de resulterende string zal scheiden (standaard een spatie).

21. Hoe transponeer je tweedimensionale data in R?

We kunnen een data frame of een matrix in R transponeren zodat de kolommen rijen worden en omgekeerd. Hiervoor gebruiken we de functie t() van base R. Bijvoorbeeld:

df <- data.frame(col_1=c(10, 20, 30), col_2=c(11, 22, 33))
print(df)
​
transposed_df <- t(df)
print(transposed_df)

Output:

 col_1 col_2
1    10    11
2    20    22
3    30    33
      [,1] [,2] [,3]
col_1   10   20   30
col_2   11   22   33

22. Hoe koppel je meerdere bewerkingen aan elkaar in R?

We kunnen meerdere bewerkingen in R aan elkaar koppelen met de pipe-operator (%>%) uit de tidyverse-collectie. Met deze operator kun je een pijplijn van functies maken waarbij de output van de eerste functie als input naar de tweede functie wordt doorgegeven, enzovoort, totdat de pijplijn eindigt. Dit elimineert de noodzaak om extra variabelen te maken en verhoogt de leesbaarheid van de code aanzienlijk.

Een voorbeeld van het gebruik van de pipe-operator op een data frame:

df <- data.frame(a=1:4, b=11:14, c=21:24)
print(df)
​
df_new <- df %>% select(a, b) %>% filter(a > 2)
print(df_new)

Output:

 a  b  c
1 1 11 21
2 2 12 22
3 3 13 23
4 4 14 24
  a  b
1 3 12
2 4 13

23. Welke soorten datagrafieken kun je maken in R?

Omdat datavisualisatie een van de sterke punten van de R-programmeertaal is, kunnen we alle soorten datagrafieken in R maken:

  • Algemene soorten grafieken:
    • Staafdiagram—toont de numerieke waarden van categorische data.
    • Lijndiagram—toont een verloop van een variabele, meestal in de tijd.
    • Scatterplot—toont de relaties tussen twee variabelen.
    • Vlakdiagram—gebaseerd op een lijndiagram, met het gebied onder de lijn gekleurd of gevuld met een patroon.
    • Taartdiagram—toont het aandeel van elke categorie van categorische data als onderdeel van het geheel.
    • Boxplot—toont een set beschrijvende statistieken van de data.
  • Geavanceerde soorten grafieken:
    • Vioolplot—toont zowel een set beschrijvende statistieken als de verdelingsvorm van de data.
    • Heatmap—toont de grootte van elk numeriek datapunt binnen de dataset.
    • Treemap—toont de numerieke waarden van categorische data, vaak als onderdeel van het geheel.
    • Dendrogram—toont een interne hiërarchie en clustering van de data.
    • Bubbelplot—toont de relaties tussen drie variabelen.
    • Hexbin-plot—toont de relaties van twee numerieke variabelen in een relatief grote dataset.
    • Wolk van woorden—toont de frequentie van woorden in een invoertekst.
    • Choropleth-kaart—toont geaggregeerde thematische statistieken van geodata.
    • Circular packing chart—toont een interne hiërarchie van de data en de waarden van de datapunten
    • enz.

De skill track Data Visualization with R helpt je je horizon te verbreden op het gebied van R-grafieken. Als je datavisualisatie in R liever leert in een bredere context, bekijk dan de grondige en beginner-vriendelijke career track Data Scientist with R.

24. Wat is vector recycling in R?

Als we een bewerking proberen uit te voeren op twee R-vectoren met verschillende lengtes, detecteert de R-interpreter onder de motorkap de kortere, recyclet diens items in dezelfde volgorde totdat de lengtes overeenkomen, en voert pas dan de benodigde bewerking op deze vectoren uit. Voordat vector recycling start, geeft de R-interpreter wel een waarschuwing over de oorspronkelijke lengte-mismatch van de vectoren.

Als we bijvoorbeeld de volgende optelling proberen uit te voeren:

c(1, 2, 3, 4, 5) + c(1, 2, 3)

Zal de tweede vector door de vector recycling feitelijk worden omgezet in c(1, 2, 3, 1, 2). De uiteindelijke uitkomst van deze bewerking wordt dus c(2, 4, 6, 5, 7).

Hoewel vector recycling soms nuttig kan zijn (bijv. wanneer we cycliciteit in de waarden van de vectoren verwachten), is het vaker ongeschikt en misleidend. We moeten dus voorzichtig zijn en de lengtes van vectoren in de gaten houden voordat we er bewerkingen op uitvoeren.

25. Waarvoor dienen de statements next en break in R?

Het statement next wordt gebruikt om een bepaalde iteratie over te slaan en naar de volgende te gaan als aan een bepaalde voorwaarde is voldaan. Het statement break wordt gebruikt om de lus te stoppen en te verlaten bij een bepaalde iteratie als aan een bepaalde voorwaarde is voldaan. Wanneer dit statement wordt gebruikt in een van de binnenste lussen van een geneste lus, verlaat het alleen die binnenste lus.

Beide statements, next en break, kunnen in elk type lus in R worden gebruikt: for-, while- en repeat-lussen. Ze kunnen ook in dezelfde lus worden gebruikt, bijv.:

for(i in 1:10) {
    if(i < 5)
        next
    if(i == 8)
        break
    print(i)}

Output:

[1] 5
[1] 6
[1] 7

26. Wat is het verschil tussen de functies str() en summary() in R?

De functie str() geeft de structuur van een R-object en algemene informatie erover terug, waarvan de exacte inhoud afhangt van de datastructuur van dat object. Voor een vector geeft zij bijvoorbeeld het datatype van de items, het bereik van itemindexen en de itemwaarden (of de eerste paar waarden als de vector te lang is). Voor een data frame geeft zij de klasse (data.frame), het aantal observaties en variabelen, de kolomnamen, het datatype van elke kolom en de eerste paar waarden van elke kolom terug.

De functie summary() geeft de samenvattende statistieken voor een R-object terug. Ze wordt meestal toegepast op data frames en matrices; voor elk numerieke kolom geeft ze minimum, maximum, gemiddelde en mediaan, en het 1e en 3e kwartiel terug, terwijl ze voor factorkolommen het aantal van elk level teruggeeft.

27. Wat is het verschil tussen de functies subset() en sample() in R?

De functie subset() in R wordt gebruikt om rijen en kolommen uit een data frame of matrix, of elementen uit een vector, te extraheren op basis van bepaalde voorwaarden, bijv.: subset(my_vector, my_vector > 10).

De functie sample() in R kan daarentegen alleen op vectoren worden toegepast. Ze extraheert een willekeurige steekproef van vooraf bepaalde grootte uit de elementen van een vector, met of zonder terugleggen. Bijvoorbeeld, sample(my_vector, size=5, replace=TRUE)

Gevorderde R-programmeer interviewvragen

28. Hoe maak je een nieuwe kolom in een data frame in R op basis van andere kolommen?

1. Met de functies transform() en ifelse() van base R:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df <- transform(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

Output:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

2. Met de functies with() en ifelse() van base R:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df["col_3"] <- with(df, ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

Output:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

3. Met de functie apply() van base R:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df["col_3"] <- apply(df, 1, FUN = function(x) if(x[1] < x[2]) x[1] + x[2] else x[1] * x[2])
print(df) 

Output:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

4. Met de functie mutate() van het dplyr-package en de functie ifelse() van base R:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df <- mutate(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

Output:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

29. Hoe parseer je een datum uit de stringrepresentatie in R?

Om een datum uit de stringrepresentatie te parseren in R, gebruiken we het lubridate-package uit de tidyverse-collectie. Dit package biedt verschillende functies om een string te parsen en de standaarddatum eruit te extraheren op basis van het oorspronkelijke datum patroon in die string. Deze functies zijn ymd(), ymd_hm(), ymd_hms(), dmy(), dmy_hm(), dmy_hms(), mdy(), mdy_hm(), mdy_hms(), enz., waarbij y, m, d, h, m en s respectievelijk jaar, maand, dag, uren, minuten en seconden zijn.

Als we bijvoorbeeld de functie dmy() draaien met als invoer een van de strings "05-11-2023", "05/11/2023" of "05.11.2023", die dezelfde datum voorstellen, krijgen we hetzelfde resultaat: 2023-11-05. Dit komt doordat we in alle drie de gevallen, ondanks verschillende scheidingstekens, eigenlijk hetzelfde patroon hebben: de dag gevolgd door de maand gevolgd door het jaar.

30. Waarvoor dient de functie switch() in R?

De functie switch() in R is een multiway branch control-statement dat een expressie evalueert ten opzichte van items van een lijst. De syntaxis is:

switch(expression, case_1, case_2, case_3....)

De expressie die aan de functie switch() wordt doorgegeven, kan evalueren tot een getal of een tekenreeks, en afhankelijk daarvan is het gedrag van de functie anders.

1. Als de expressie evalueert tot een getal, geeft de functie switch() het item uit de lijst terug op basis van positionele matching (d.w.z. de index is gelijk aan het getal waartoe de expressie evalueert). Als het getal groter is dan het aantal items in de lijst, retourneert switch() NULL. Bijvoorbeeld:

switch(2, "circle", "triangle", "square")

Output:

"triangle"

2. Als de expressie evalueert tot een tekenreeks, retourneert de functie switch() de waarde op basis van de naam:

switch("red", "green"="apple", "orange"="carot", "red"="tomato", "yellow"="lemon")

Output:

"tomato"

Als er meerdere matches zijn, wordt de eerstgevonden waarde teruggegeven. Het is ook mogelijk om als laatste argument van de functie switch() een onbenoemd item toe te voegen dat dient als standaard fallback-optie als er geen matches zijn. Als deze standaardoptie niet is gezet en er zijn geen matches, dan retourneert de functie NULL.

De functie switch() is een efficiënter alternatief voor lange if-else-statements, omdat ze de code minder repetitief en beter leesbaar maakt. Typisch wordt ze gebruikt voor het evalueren van één enkele expressie. We kunnen nog steeds complexere geneste switch-constructies schrijven voor het evalueren van meerdere expressies. In die vorm wordt switch() echter snel moeilijk leesbaar en verliest daarmee haar belangrijkste voordeel ten opzichte van if-else-constructies.

31. Wat is het verschil tussen de functies apply(), lapply(), sapply() en tapply()?

Hoewel al deze functies het mogelijk maken om over een datastructuur te itereren zonder lussen te gebruiken en dezelfde bewerking op elk element uit te voeren, verschillen ze qua type input en output en de functie die ze uitvoeren.

  • apply()—neemt een data frame, matrix of array en retourneert een vector, lijst, matrix of array. Deze functie kan rij-gewijs, kolom-gewijs of beide worden toegepast.

  • lapply()—neemt een vector, lijst of data frame en retourneert altijd een lijst. In het geval van een data frame als input, wordt deze functie alleen kolom-gewijs toegepast.

  • sapply()—neemt een vector, lijst of data frame en retourneert de meest gesimplificeerde datastructuur, d.w.z. een vector voor een inputvector, een lijst voor een inputlijst en een matrix voor een input data frame.

  • tapply()—berekent samenvattende statistieken voor verschillende factoren (d.w.z. categorische data).

32. Noem en definieer de control-statements in R.

Er zijn drie groepen control-statements in R: conditionele statements, lusstatements en sprongstatements.

Conditionele statements:

  • if—test of aan een bepaalde voorwaarde is voldaan en biedt bewerkingen om uit te voeren als dat zo is.

  • if-else—test of aan een bepaalde voorwaarde is voldaan, biedt bewerkingen om uit te voeren als dat zo is en een andere set bewerkingen voor het tegenovergestelde geval.

  • if... else if... else—test een reeks voorwaarden één voor één, biedt bewerkingen om uit te voeren voor elke voorwaarde als die waar is, en een fallback-set bewerkingen als geen van die voorwaarden waar is.

  • switch—evalueert een expressie ten opzichte van de items van een lijst en retourneert een waarde uit de lijst op basis van de resultaten van deze evaluatie.

Lusstatements:

  • for—itereert in for-lussen over een reeks.

  • while—controleert in while-lussen of aan een vooraf gedefinieerde logische voorwaarde (of meerdere) is voldaan bij de huidige iteratie.

  • repeat—gaat in repeat-lussen door met dezelfde set bewerkingen totdat aan een vooraf gedefinieerde breakvoorwaarde (of meerdere) is voldaan.

Sprongstatements:

  • next—slaat een bepaalde iteratie van een lus over en springt naar de volgende als aan een bepaalde voorwaarde is voldaan.

  • break—stopt en verlaat de lus bij een bepaalde iteratie als aan een bepaalde voorwaarde is voldaan.

  • return—verlaat een functie en retourneert het resultaat.

33. Wat zijn reguliere expressies, en hoe werk je ermee in R?

Een reguliere expressie, of regex, in R of andere programmeertalen, is een teken of tekenreeks die een bepaald tekstpatroon beschrijft en wordt gebruikt voor het ontginnen van tekstdata. In R zijn er twee hoofdmanieren om met reguliere expressies te werken:

  1. Met base R en de functies (zoals grep(), regexpr(), gsub(), regmatches(), enz.) om regex te lokaliseren, matchen, extraheren en vervangen.
  2. Met het gespecialiseerde stringr-package uit de tidyverse-collectie. Dit is een handigere manier om met R-regex te werken, omdat de functies van stringr veel intuïtievere namen en syntaxis hebben en meer uitgebreide functionaliteit bieden.

A Guide to R Regular Expressions geeft meer details over hoe je met regex in R werkt.

34. Welke packages worden gebruikt voor machine learning in R?

  • caret—voor diverse classificatie- en regressie-algoritmen.
  • e1071—voor support vector machines (SVM), naive Bayes-classifier, bagged clustering, fuzzy clustering en k-nearest neighbors (KNN).
  • kernlab—biedt kernel-gebaseerde methoden voor classificatie-, regressie- en clusteringalgoritmen.
  • randomForest—voor random forest-classificatie en -regressie.
  • xgboost—voor gradient boosting, lineaire regressie en beslissingsbomen.
  • rpart—voor recursieve opsplitsing in classificatie-, regressie- en survivalbomen.
  • glmnet—voor lasso- en elastic-net-regularisatie toegepast op lineaire regressie, logistische regressie en multinomiale regressie.
  • nnet—voor neurale netwerken en multinomiale log-lineaire algoritmen.
  • tensorflow—de R-interface naar TensorFlow, voor diepe neurale netwerken en numerieke berekening met datastroomgrafieken.
  • Keras—de R-interface naar Keras, voor diepe neurale netwerken.

35. Hoe selecteer je features voor machine learning in R?

Laten we drie verschillende benaderingen bekijken en hoe je die implementeert in het caret-package.

  1. Door sterk gecorreleerde features in de dataset te detecteren en te verwijderen.

We moeten een correlatiematrix van alle features maken en vervolgens de sterk gecorreleerde identificeren, meestal die met een correlatiecoëfficiënt groter dan 0,75:

corr_matrix <- cor(features)
highly_correlated <- findCorrelation(corr_matrix, cutoff=0.75)
print(highly_correlated)
  1. Door de features van het data frame te rangschikken op belangrijkheid.

We moeten een trainingsschema maken om de parameters voor train te sturen, het gebruiken om een geselecteerd model te bouwen en vervolgens de variabele-importance voor dat model te schatten:

control <- trainControl(method="repeatedcv", number=10, repeats=5)
model <- train(response_variable~., data=df, method="lvq", preProcess="scale", trControl=control)
importance <- varImp(model)
print(importance)
  1. Door automatisch de optimale features te selecteren.

Een van de populairste methoden die caret biedt voor het automatisch selecteren van optimale features is een backward selection-algoritme genaamd Recursive Feature Elimination (RFE).

We moeten de controle berekenen met een gekozen resampling-methode en een vooraf gedefinieerde lijst met functies, het RFE-algoritme toepassen met doorgeven van de features, de targetvariabele, het aantal te behouden features en de control, en vervolgens de geselecteerde predictoren extraheren:

control <- rfeControl(functions=caretFuncs, method="cv", number=10)
results <- rfe(features, target_variable, sizes=c(1:8), rfeControl=control)
print(predictors(results))

Als je je machine learning-vaardigheden in R wilt versterken, is dit een solide en uitgebreide bron: Machine Learning Scientist with R.

36. Wat zijn correlatie en covariantie, en hoe bereken je die in R?

Correlatie is een maat voor de sterkte en richting van de lineaire relatie tussen twee variabelen. De waarden liggen tussen -1 (perfecte negatieve correlatie) en 1 (perfecte positieve correlatie). Covariantie is een maat voor de mate waarin twee variabelen ten opzichte van elkaar veranderen en voor de richting van de lineaire relatie ertussen. In tegenstelling tot correlatie heeft covariantie geen bereiklimiet.

In R gebruiken we voor het berekenen van correlatie de functie cor(), en voor covariantie—de functie cov(). De syntaxis van beide functies is identiek: we geven twee variabelen (vectoren) door waarvoor we de maat willen berekenen (bijv. cor(vector_1, vector_2) of cov(vector_1, vector_2)), of het hele data frame als we de correlatie of covariantie tussen alle variabelen van dat data frame willen berekenen (bijv. cor(df) or cov(df)). In het geval van twee vectoren is het resultaat een enkele waarde; in het geval van een data frame is het resultaat een correlatie- (of covariantie-)matrix.

37. Noem en definieer de verschillende benaderingen om modelnauwkeurigheid in R te schatten.

Hieronder staan verschillende benaderingen en hoe je ze implementeert in het caret-package van R.

  • Data splitsen—de volledige dataset wordt opgesplitst in een trainingsset en een testset. De eerste wordt gebruikt om het model te fitten, de tweede om de prestaties op ongeziene data te testen. Deze aanpak werkt vooral goed bij big data. Om data splitsen in R te implementeren, gebruiken we de functie createDataPartition() en zetten we de parameter p op het benodigde dataproportie voor training.
  • Bootstrap-resampling—willekeurige steekproeven uit de dataset trekken en het model daarop schatten. Dergelijke resampling-iteraties worden vaak en met terugleggen uitgevoerd. Om bootstrap-resampling in R te implementeren, zetten we de parameter method van de functie trainControl() op "boot" bij het definiëren van de training control van het model.
  • Cross-validatiemethoden
    • k-fold cross-validatie —de dataset wordt opgesplitst in k-subsets. Het model wordt getraind op k-1 subsets en getest op de overblijvende subset. Hetzelfde proces wordt voor alle subsets herhaald en vervolgens wordt de uiteindelijke modelnauwkeurigheid geschat.
    • Herhaalde k-fold cross-validatie —het principe is hetzelfde als bij k-fold cross-validatie, alleen wordt de dataset meer dan één keer in k-subsets opgesplitst. Voor elke herhaling wordt de modelnauwkeurigheid geschat, en vervolgens wordt de uiteindelijke nauwkeurigheid berekend als het gemiddelde van de nauwkeurigheidswaarden over alle herhalingen.
    • Leave-one-out cross-validatie (LOOCV) —één data-observatie wordt apart gezet en het model wordt getraind op alle andere observaties. Hetzelfde proces wordt voor alle observaties herhaald.

Om deze cross-validatiemethoden in R te implementeren, zetten we de parameter method van de functie trainControl() respectievelijk op "cv", "repeatedcv" of "LOOCV" bij het definiëren van de training control van het model.

38. Wat is de chi-kwadraattoets, en hoe voer je die uit in R?

De chi-kwadraat hypothesetoets is een techniek die wordt gebruikt om te bepalen of twee categorische variabelen onafhankelijk zijn of dat er een verband tussen bestaat. Om de chi-kwadraattoets in R uit te voeren, gebruiken we de functie chisq.test() uit het stats-package. De stappen zijn als volgt:

1. Maak een kruistabel met de categorische variabelen van interesse met de functie table() van base R:

table = table(df["var_1"], df["var_2"]) 

2. Geef de kruistabel door aan de functie chisq.test():

chisq.test(table) 

Je kunt je kennis van chi-kwadraattoetsen en andere hypothesetoetsen opfrissen in onze cursus Hypothesis Testing in R.

39. Wat is Shiny in R?

Shiny is een open-source R-package waarmee je eenvoudig en snel volledig interactieve webapplicaties en webpagina’s voor data science kunt bouwen met alleen R, zonder kennis van HTML, CSS of JavaScript. Shiny in R biedt tal van basis- en geavanceerde features, widgets, layouts, voorbeelden van webapps en hun onderliggende code om op voort te bouwen en aan te passen, evenals gebruikersshowcases uit verschillende domeinen (technologie, sport, bankieren, onderwijs, enz.) verzameld en gecategoriseerd door de Shiny-appontwikkelaarscommunity.

40. Wat is het verschil tussen de functies with() en within()?

De functie with() evalueert een R-expressie op een of meer variabelen van een data frame en geeft het resultaat terug zonder het data frame te wijzigen. De functie within() evalueert een R-expressie op een of meer variabelen van een data frame, wijzigt het data frame en geeft het resultaat terug. Hieronder zien we hoe deze functies werken met een voorbeeld-data frame:

df <- data.frame(a = c(1, 2, 3),  b = c(10, 20, 30))
print(df)

with(df, a * b)

print(within(df, c <- a * b))

Output:

  a  b
1 1 10
2 2 20
3 3 30

10  40  90
  a  b  c
1 1 10 10
2 2 20 40
3 3 30 90

Bij gebruik van de functie within() moeten we, om de wijzigingen op te slaan, de output van de functie aan een variabele toekennen.

Conclusie

Kortom, in dit artikel hebben we de 40 meest voorkomende R-programmeer interviewvragen besproken en welke antwoorden daarvoor worden verwacht. Hopelijk voel je je met deze informatie in handen zelfverzekerder en klaar voor een succesvol R-interview, of je nu op zoek bent naar een baan in R of naar de juiste kandidaat voor een openstaande functie in je bedrijf.

Wil je praktijkervaring opdoen met het beantwoorden van vragen, bekijk dan onze cursus Statistiek interviewvragen oefenen in R.


Elena Kosourova's photo
Author
Elena Kosourova
LinkedIn

IBM Certified Data Scientist (2020), eerder petroleumgeoloog/geomodelleur voor olie- en gasvelden wereldwijd, met 12+ jaar internationale werkervaring. Vaardig in Python, R en SQL. Expertisegebieden: datacleaning, datamanipulatie, datavisualisatie, data-analyse, datamodellering, statistiek, storytelling, machine learning. Ruime ervaring met het beheren van datascience-communities en het schrijven/reviewen van artikelen en tutorials over data science en carrière-onderwerpen.

Onderwerpen
R
Loopbaandiensten

Begin vandaag nog met je R-reis!

Leerpad

R-ontwikkelaar

52 uur
Leer de vaardigheden die je nodig hebt om als R-ontwikkelaar succesvol te zijn door efficiënt code te schrijven en te verpakken. Je hoeft niet te kunnen programmeren!
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken