We kunnen R functions toepassen om makkelijk specifieke terugkerende opdrachten uit te voeren.
De syntax voor een functie is <function_name>(<function_input(s)>)
.
- Een functie heeft een naam.
- Een functie gebruikt input.
- Een functie geeft een resultaat terug, de output.
Dit blog is een onderdeel van een blogserie over R waarin we o.a. ingaan op hoe je R installeert, hoe je in RStudio werkt, verschillende soorten datasets uitleest, data manipuleert met bijvoorbeeld dplyr of data.table, of data visualiseert in bijvoorbeeld een histogram of boxplot.
In dit blog leer je meer over onderstaande R functions:
- Standaard R functions: dit zijn functies uit packages en functies die standaard binnen R beschikbaar zijn.
- Zelfgeschreven functies: je kunt zelf functies maken als je meermaals dezelfde bewerking op input wilt uitvoeren om tot een gewenste output te komen.
1. Standaard R functions
Inmiddels zijn er terloops al meerdere functies aan bod gekomen. We bekijken enkele veelgebruikte standaard functies.
print()
print (toont) een uitkomst:
message <- "Hi there!"
print(message)
re> [1] "Hi there!"
nchar()
berekent het aantal tekens in een tekst:
message <- "Hello!"
nchar(message)
[1] 6
substr()
geeft een selectie van tekens in een tekst:
message <- "Hello!"
substr(message, start = 2, stop = 4)
[1] "ell"
as.character()
zet een getal om naar tekst:
number <- 25.4
as.character(number)
[1] "25.4"
as.numeric()
zet een tekst om naar getal:
text_number <- "25.4"
as.numeric(text_number)
[1] 25.4
as.integer()
zet een tekst om naar een integer (geheel) getal:
text_number <- "25.4"
as.integer(text_number)
[1] 25
paste()
plakt elementen aan elkaar tot 1 tekst:
paste("This", "is", "message", "number", 5)
[1] "This is message number 5"
paste0()
plakt elementen zonder spaties aan elkaar tot 1 tekst:
paste0("This", "is", "message", "number", 5)
[1] "Thisismessagenumber5"
c()
(combine) maakt een vector:
c(1, 2, 4, 8, 16)
[1] 1 2 4 8 16
seq()
(sequence) maakt een vector met een reeks getallen:
seq(from = 1, to = 5)
[1] 1 2 3 4 5
list()
maakt een lijst met elementen:
list(1, "text", 2.4, TRUE)
[[1]]
[1] 1
[[2]]
[1] "text"
[[3]]
[1] 2.4
[[4]]
[1] TRUE
is.na()
controleert of iets missend (not available) is:
numbers <- c(11, 21, 19, NA, 46, NA)
is.na(numbers)
[1] FALSE FALSE FALSE TRUE FALSE TRUE
round()
rond een getal af op een bepaald aantal decimalen:
number <- 25.4457
round(number, digits = 2)
[1] 25.45
sqrt()
berekent de vierkantswortel (square root):
number <- 25
sqrt(number)
[1] 5
unique()
toont de unieke waarden van elementen in een verzameling:
numbers <- c(2, 1, 2, 3)
unique(numbers)
[1] 2 1 3
sort()
sorteert een verzameling elementen:
numbers <- c(2, 1, 2, 3)
sort(numbers)
[1] 1 2 2 3
length()
toont het aantal elementen in een verzameling:
numbers <- c(2, 1, 2, 3)
length(numbers)
[1] 4
sum()
betekent de som van een verzameling getallen:
numbers <- c(2, 1, 2, 3)
sum(numbers)
[1] 8
mean()
berekent het gemiddelde:
numbers <- c(2, 1, 2, 3, 4.2)
mean(numbers)
[1] 2.44
median()
berekent de mediaan:
numbers <- c(2, 1, 2, 3, 4.2)
median(numbers)
[1] 2
min()
toont de laagste waarde:
numbers <- c(2, 1, 2, 3, 4.2)
min(numbers)
[1] 1
max()
toont de hoogste waarde:
numbers <- c(2, 1, 2, 3, 4.2)
max(numbers)
[1] 4.2
sd()
betekent de standaard deviatie:
numbers <- c(2, 1, 2, 3, 4.2)
sd(numbers)
[1] 1.21161
Je hoeft deze functies niet direct uit je hoofd te kennen.
Je kunt ze altijd opzoeken in documentatie, bijvoorbeeld op rdocumentation.org.
2. Zelfgeschreven R functies
Wanneer je zelf code schrijft die je vaker gebruikt, dan is het verstandig om zelf een functie te maken.
Onderstaand voorbeeld toont een zelfgeschreven functie die 2 getallen optelt:
sum_numbers <- function(number_1, number_2) {
result <- number_1 + number_2
return(result)
}
Hierin:
- Is
sum_numbers
de naam - Heeft de functie 2 inputs (ook wel argumenten of parameters genoemd)
number_1
ennumber_2
- Binnen de functie wordt de som berekend en in variabele
result
bewaard - De som
result
wordt teruggegeven metreturn()
Nu kunnen we de functie (her)gebruiken:
sum_numbers(number_1 = 10, number_2 = 15)
[1] 25
sum_numbers(number_1 = 5454, number_2 = 64556)
[1] 70010
Een ander voorbeeld is om met behulp van de stelling van Pythagoras de lengte van de schuine zijde c te berekenen:
calculate_length_side_c <- function(length_side_a, length_side_b) {
length_side_c <- sqrt(length_side_a^2 + length_side_b^2)
return(length_side_c)
}
print(calculate_length_side_c(length_side_a = 3, length_side_b = 4))
print(calculate_length_side_c(length_side_a = 3, length_side_b = 5))
print(calculate_length_side_c(length_side_a = 3, length_side_b = 6))
[1] 5
[1] 5.830952
[1] 6.708204
Je ziet hoe makkelijk je met functies je eigen code / logica kunt hergebruiken.
Om te onthouden over R functions
- Functies
- Hergebruiken van code
- Hebben een naam, input en output
- Standaard functies
- Altijd beschikbaar vanuit R
- Gebruik je met syntax
function_name>(<function_input(s)>)
- Voorbeeld:
round(25.4454, digits = 2)
- Zoek op in documentatie, bijvoorbeeld op rdocumentation.org
- Zelfgeschreven functies
- Om je eigen code te kunnen hergebruiken
- Voorbeeld:\
sum_numbers <- function(number_1, number_2) {result <- number_1 + number_2 return(result)}
Wil jij goed leren werken in R? Tijdens onze Opleiding R leer je alles wat je nodig hebt om zelfstandig analyses uit te voeren in R.
Rik is data scientist en marketeer bij Data Science Partners. Vanuit zijn achtergrond op de Technische Universiteit Eindhoven heeft hij veel affiniteit met data. Na zijn studie heeft hij als consultant altijd met data gewerkt en tevens ervaring opgedaan in het geven van trainingen.