lapply och anonyma funktioner
Att skriva egna funktioner och sedan använda dem i lapply() är en fin prestation! Men att definiera en funktion enbart för att använda den en enda gång är lite onödigt, eller hur? Därför finns det så kallade anonyma funktioner i R.
Tidigare lärde du dig att funktioner i R är objekt i sin egen rätt. Det innebär att de inte automatiskt kopplas till ett namn. När du skapar en funktion kan du använda tilldelningsoperatorn för att ge funktionen ett namn. Det är dock fullt möjligt att låta bli – det kallas en anonym funktion:
# Namngiven funktion
triple <- function(x) { 3 * x }
# Anonym funktion med samma implementation
function(x) { 3 * x }
# Använd anonym funktion inuti lapply()
lapply(list(1,2,3), function(x) { 3 * x })
split_low är redan definierad.
Den här övningen är en del av kursen
R för medelnivå
Övningsinstruktioner
- Ändra det första anropet till
lapply()så att det använder en anonym funktion som gör samma sak. - Gör på samma sätt med det andra anropet till
lapplyoch ersätt det med en anonym version av funktionenselect_second(). - Ta bort definitionerna av både
select_first()ochselect_second(), eftersom de inte längre behövs.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# split_low has been created for you
split_low
# Transform: use anonymous function inside lapply
select_first <- function(x) {
x[1]
}
names <- lapply(split_low, select_first)
# Transform: use anonymous function inside lapply
select_second <- function(x) {
x[2]
}
years <- lapply(split_low, select_second)