lapply と無名関数
独自の関数を定義して lapply() の中で使えるようになりましたね。しかし、一度しか使わない関数をわざわざ定義するのは少し手間がかかります。そこで、R では無名関数を使うことができます。
以前学んだように、R における関数はそれ自体がオブジェクトです。つまり、関数は必ずしも名前に紐付けられるわけではありません。関数を作成するとき、代入演算子を使って名前を付けることができますが、名前を付けないことも可能です。これを無名関数と呼びます。
# Named function
triple <- function(x) { 3 * x }
# Anonymous function with same implementation
function(x) { 3 * x }
# Use anonymous function inside lapply()
lapply(list(1,2,3), function(x) { 3 * x })
split_low はあらかじめ定義されています。
この演習はコースの一部です
中級 R
演習の手順
- 1つ目の
lapply()の呼び出しを、同じ処理を行う無名関数を使った形に書き換えましょう。 - 同様に、2つ目の
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)