始める無料で始める

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)
コードを編集して実行