2011年2月25日金曜日

Rでナベアツ

以前どこかのブログでナベアツの3の倍数でアホになるをRで実装していた人がいたので、真似てみることにした。for文を使っており、さらには2桁ぐらいまでしかアホが判定できない(例えば300が検出できない)非常に時間がかかるアレなコードだったので、複数桁への対応と高速化にチャレンジしてみました。

その結果が以下のコードに。

n <- 50000 # カウントするデータ数
startTime <- proc.time()
s <- seq(1:n)
idx <- grep(3,s) # 3が含まれる値がidxに入る
sss <- ifelse( s%%3==0 , "\(^o^)/" ,s) # 3の倍数を置き換え
sss[idx] <- "\(^o^)/" # 3が含まれる数値を置き換え
finishTime <- proc.time()
print(finishTime-startTime) # 経過時間を表示

上記コードのの実行時間は以下のようになり、短い時間で終了させることができていることが分かる。

ユーザシステム経過
0.250.040.28

フォロワー

ページビューの合計