裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

文字列操作関数 str_count

2014年06月03日 | ブログラミング

str_count 関数は,第1引数の文字列中に,第2引数の文字列が何回あるかを返す関数だということだが,第2引数の長さが1の場合には,strsplit を使って第1引数を1文字のベクトルにして比較演算をする方がはるかに速い。

library(stringr)
func1 = function(n0) {
    count = 0
    for (n in 1:n0) {
        count = count+str_count(n, "7")
    }
    count
}

func2 = function(n0) {
    count = 0
    for (n in 1:n0) {
        count = count+sum(unlist(strsplit(as.character(n), "")) == "7")
    }
    count
}

> n0 = 99999
> system.time(print(func1(n0)))
[1] 50000
   ユーザ   システム       経過  
     9.800      0.044      9.795
> system.time(print(func2(n0)))
[1] 50000
   ユーザ   システム       経過  
     0.684      0.003      0.683

> system.time(replicate(10000, str_count("67867899878786789999999999", "7")))
   ユーザ   システム       経過  
     0.910      0.004      0.939
> system.time(replicate(10000, sum(unlist(strsplit("67867899878786789999999999", "")) == "7")))
   ユーザ   システム       経過  
     0.079      0.002      0.095


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« CodeIQ | トップ | 理論的な解が存在するかどう... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事