以前どこかのブログでナベアツの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.25 | 0.04 | 0.28 |