Kom igångKom igång gratis

Tillämpa funktioner som returnerar NULL

I alla tidigare övningar antogs det att funktionerna som tillämpades på vektorer och listor faktiskt returnerade ett meningsfullt resultat. Funktionen tolower() returnerar till exempel strängarna med tecknen i gemener. Så är det inte alltid. Anta att du vill visa strukturen för varje element i en lista. Du kan använda funktionen str() för detta, som returnerar NULL:

lapply(list(1, "a", TRUE), str)

Detta anrop returnerar faktiskt en lista av samma storlek som indatalistan, med enbart NULL-värden. Att däremot anropa

str(TRUE)

enstaka skriver bara ut strukturen för det logiska värdet i konsolen, inte NULL. Det beror på att str() använder invisible() i bakgrunden, vilket returnerar en osynlig kopia av returvärdet – i det här fallet NULL. Det förhindrar att värdet skrivs ut när resultatet av str() inte tilldelas en variabel.

Vad returnerar följande kodblock (split_low finns redan i arbetsytan)? Försök att resonera dig fram till svaret innan du kör koden i konsolen!

lapply(split_low, function(x) {
  if (nchar(x[1]) > 5) {
    return(NULL)
  } else {
    return(x[2])
  }
})

Den här övningen är en del av kursen

R för medelnivå

Visa kurs

Interaktiv övning med praktiskt arbete

Gör teori till handling med en av våra interaktiva övningar

Starta övningen