Aan de slagBegin gratis

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

Bekijk cursus

Interactieve oefening met praktijkervaring

Zet theorie om in actie met een van onze interactieve oefeningen

Begin oefening