March 2015
Beginner to intermediate
276 pages
3h 31m
Japanese
データサイエンティストには、スピードが必要です。コードが高速なら、もっと大きなデータを使ってもっと意欲的な仕事をすることができます。この章では、Rで高速なコードを書くためのある方法を説明します。そして、この方法を使ってスロットマシンの1千万回の実行をシミュレートします。
コードはさまざまな方法で書くことができますが、もっとも高速なRコードは、論理テスト、添字操作、要素単位の実行の3つを利用しているのが普通です。これらはRがもっともうまく実行できる処理です。これらのものを使っているコードは、一般にベクトル化という一定の特徴を備えています。この種のコードは、入力値としてベクトルを受け取り、ベクトル内の個々の値を同時に操作できます。
ベクトル化されたコードがどのようなものかを理解するために、絶対値を計算する関数について2つの例で比較してみましょう。これらはそれぞれ数値のベクトルをとり、それを絶対値(正数)のベクトルに変換します。第1の例はベクトル化されていません。abs_loopはforループを使って1度に1つずつベクトルの各要素を操作します。
abs_loop <- function(vec){
for (i in 1:length(vec)) {
if (vec[i] < 0) {
vec[i] <- -vec[i]
}
}
vec
}
第2の例、abs_setはabs_loopをベクトル化したものです。この関数は論理添字を使ってベクトル内のすべての負数を同時に操作します。
abs_set <- function(vec){
negs <- vec < 0
vec[negs] <- vec[negs] * -1
vec
}
Read now
Unlock full access