Functies toepassen die NULL retourneren
In alle voorgaande oefeningen gingen we ervan uit dat de functies die op vectoren en lijsten werden toegepast ook echt een zinvol resultaat opleverden. De functie tolower() geeft bijvoorbeeld gewoon de strings terug met alle letters in lowercase. Dat is niet altijd zo. Stel dat je de structuur van elk element van een lijst wilt weergeven. Daarvoor kun je de functie str() gebruiken, die NULL retourneert:
lapply(list(1, "a", TRUE), str)
Deze aanroep retourneert inderdaad een lijst, even groot als de invoerlijst, met allemaal NULL-waarden. Daarentegen geeft
str(TRUE)
op zichzelf alleen de structuur van de logische waarde op de console weer, niet NULL. Dat komt omdat str() onder water invisible() gebruikt, dat een onzichtbare kopie van de retourwaarde teruggeeft, in dit geval NULL. Hierdoor wordt het niet afgedrukt wanneer het resultaat van str() niet wordt toegewezen.
Wat geeft het volgende codeblok terug (split_low is al beschikbaar in de workspace)? Probeer eerst te redeneren over het resultaat voordat je het zomaar in de console uitvoert!
lapply(split_low, function(x) {
if (nchar(x[1]) > 5) {
return(NULL)
} else {
return(x[2])
}
})
Deze oefening maakt deel uit van de cursus
R voor gevorderden
Interactieve oefening met praktijkervaring
Zet theorie om in actie met een van onze interactieve oefeningen
Begin oefening