Hoe werken functies in R?

Veel concepten kunnen mensen zichzelf aanleren, maar functies blijft altijd lastig om goed te begrijpen. Wat doen ze precies en waarom heb je ze nodig? Ik leg het je uit.

Als je in R programmeert, maak je (of je het nou weet of niet) veelvuldig gebruik van functies. Kijk bijvoorbeeld naar de volgende code:

Hier maak je gebruik van functie met de naam max. Tussen de haakjes staan twee getallen die je meegeeft aan de functie. Dit zijn de zogenaamde inputs. Je ziet ook de output, namelijk het getal 6. Recapitulerend heeft de functie max dus twee inputs, berekent daarvan het maximum en geeft het resultaat vervolgens terug als output.

Een voorbeeldfunctie

Er zijn ontzettend veel functies beschikbaar in R, maar hoe schrijf je nu je eigen functie? Een functie heeft een aantal dingen nodig: een naam, een lijst met inputs en code om de inputs te transformeren.

Laten we beginnen met een simpel voorbeeld, een functie genaamd greeting. Deze functie kan je aanroepen met een naam (bijvoorbeeld “Bastiaan”) en vervolgens krijg je “Hello Bastiaan”. Hieronder zie je hoe deze functie werkt:

Het voordeel van functies is dat ik ze kan hergebruiken. Zo kan ik ook een andere naam meegeven aan de greeting functie, bijvoorbeeld “Ellen”:

Hoe schrijf je een functie?

Oké, maar hoe heb je die functie dan gemaakt? Dat gaan we nu behandelen. De functie ziet er als volgt uit:

greeting = function(name) {
  paste("Hello", name)
}

Laat het even op je inwerken en lees dan deze uitleg. Er wordt een variabele aangemaakt met de naam greeting. normaal zou je deze variabele een waarde geven zoals bijvoorbeeld greeting = “hallo” maar hier staat er greeting = function(name) etc. Dat betekent dat greeting nu geen variabele is, maar een functie!

De naam function zegt tegen R dat je een functie gaat definiëren. Tussen de haakjes staan vervolgens de inputs van deze functie, in dit geval name. Tussen de accolades staat de inhoud van de functie, ookwel de body van de functie genoemd. Met paste(“Hello”, name) wordt de tekst “Hello” voor de naam geplakt.

Dit is wat mensen lastig vinden aan functies: wat is nou de waarde van name? Eigenlijk moet je name zien als een placeholder die nog geen waarde heeft. Pas als je bijvoorbeeld greeting(“Bastiaan”) uitvoert, dan wordt de waarde “Bastiaan” ingevuld op de plaats waar name staat. Met andere woorden: name is een variabele die je kan gebruiken in de body van de functie en die zijn uiteindelijke waarde pas krijgt als de functie wordt aangeroepen.

Het resultaat van paste(“Hello”, name) wordt vervolgens als output teruggegeven.

Waarom is dit handig?

Ons greeting voorbeeld is misschien niet de meest sexy toepassing van functies, maar ze zijn wel degelijk ontzettend handig. Je kan op een eenvoudige manier stukken code hergebruiken, zonder alles te hoeven kopiëren en plakken. Ook kan je met functies je eigen ggplot themes maken, berekeningen opdelen in kleinere stukken en ook als je Shiny gebruikt zal je veel eigen functies moeten schrijven.

Meer vragen?

Is het kwartje nog niet gevallen of heb je een specifieke vraag? Stuur even een berichtje in de chat! Ik kan niet altijd meteen antwoorden maar ik help je graag verder!

Volgende
Volgende

Markers weergeven op een leaflet kaart in R Shiny