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å
Interaktiv övning med praktiskt arbete
Gör teori till handling med en av våra interaktiva övningar
Starta övningen