モモノキ&ナノネと一緒にR関数の使い方を練習しよう
データの要素ごとに処理を適用できるlapply関数のキホン的使い方
ナノネ、統計解析用フリーソフト『R』の使い方を練習するよ。今回はapplyファミリーのひとつでlapply関数を使ってみよう。
apply、sapplyに続いて今度はlapply関数だね。
モモノキ、lapply関数はどんな処理ができるの?
引き数でデータ(オブジェクト)と関数を渡すと、データの各要素ごとに関数を適用してくれるのはsapply関数と同じ感じ。ただしsapplyと違って返りのデータ型は必ずリストになるよ。
実際にlapply関数を使って試してみよう。
ラジャー。
sapply関数と同じで、第1引数にデータ(オブジェクト)、第2引数に関数を指定すれば実行できるよ(第3引数以降は第2引数に指定した関数の第2引数以降に利用できるんだけど、ややこしいから今回も扱わないよ)。
最初はベクトルデータをlapply関数に渡してみよう。今回も引数の関数は単純に入力値を2倍するだけにするね。
X_vector <- c(1, 2, 3, 4, 5) # ベクトルデータ
print(X_vector)
class(X_vector)
result <- lapply(X_vector, function(x){x * 2})
print(result)
class(result)
前回のsapply練習コードをコピペしてlapplyに変えただけだね。要素が全て2倍で、返りのデータ型は確かにリストになってるね。
次はリストをデータとして渡してみよう。
X_list <- list(1:5) # リストデータ
print(X_list)
class(X_list)
result <- lapply(X_list, function(x){x * 2})
print(result)
class(result)
当然、返りはリスト。
次は行列をデータとして渡してみよう。
X_matrix <- matrix(1:6, ncol=3) # 行列データ
print(X_matrix)
class(X_matrix)
result <- lapply(X_matrix, function(x){x * 2})
print(result)
class(result)
やっぱり返りの型はリスト。
データフレームも試してみよう。
X_df <- data.frame(x1=1:5, x2=6:10, x3=11:15) # データフレーム
print(X_df)
class(X_df)
result <- lapply(X_df, function(x){x * 2})
print(result)
class(result)
リストで返ってくるね。
要素ごとに何か処理を実行したときは、sapply関数を使えばいいのね。
もしリストの要素ごとに合計するなら、関数にsumを使ってこんな感じかな?
X_list2 <- list(1:5, 1:10, 1:3, 1:20) # リストデータ
print(X_list2)
class(X_list2)
result <- lapply(X_list2, sum)
print(result)
class(result)
上と同じデータをsapply関数で処理した場合は...
X_list2 <- list(1:5, 1:10, 1:3, 1:20) # リストデータ
print(X_list2)
class(X_list2)
result <- sapply(X_list2, sum) # sapply関数に変更
print(result)
class(result)
sapply関数で処理した場合は、ベクトルで返ってくるね。
まだ使いどころが良くわからないけど、少しずつ試してみるよ。
lapply関数の練習は以上で。
またね!
0 件のコメント :
コメントを投稿