lapply 與匿名函式
自己撰寫函式,然後把它們用在 lapply() 裡,這已經很不錯了!不過,只為了用一次就特地定義函式,有點小題大作,對吧?這就是為什麼你可以在 R 裡使用所謂的「匿名函式」。
先前你學到,在 R 中,函式本身就是物件。這代表它們不會自動綁定到某個名稱。當你建立一個函式時,可以用指定運算子把名稱指派給它。不過,你也完全可以不給它名字。這就叫做匿名函式:
# 具名函式
triple <- function(x) { 3 * x }
# 實作相同的匿名函式
function(x) { 3 * x }
# 在 lapply() 中使用匿名函式
lapply(list(1,2,3), function(x) { 3 * x })
split_low 已為你準備好。
本練習屬於課程
R 中級
練習說明
- 將第一個
lapply()呼叫改寫為使用能做出相同結果的匿名函式。 - 以相同方式,將第二個
lapply呼叫改成使用select_second()的匿名版本。 - 刪除
select_first()與select_second()的函式定義,因為它們已經不需要了。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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)