裏 RjpWiki

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

プログラムも簡潔に書きたい

2014年04月10日 | ブログラミング

二人の相性(%)を瞬時に判定するR関数 だけど,計算を簡単に行うプログラムを書くのが面倒だとちょっと...

このプログラムを入力するのが面倒くさい。

というわけで,以下のように書いてみる。

uranai = function(NAME1, NAME2, PRINT = TRUE) {
    ### 名前を統合 ### 
    x = unlist(strsplit(c(NAME1, NAME2), split = ""))
    y = numeric(length(x))
    y[x %in% unlist(strsplit("あぁかさたなはまらがざだばぱやゃわ", ""))] = 1
    y[x %in% unlist(strsplit("いぃきしちにひみりぎじぢびぴ",      ""))] = 2
    y[x %in% unlist(strsplit("うぅくすつぬふむるぐずづぶぷゆゅっ", ""))] = 3
    y[x %in% unlist(strsplit("えぇけせてねへめれげぜでべぺ",      ""))] = 4
    y[x %in% unlist(strsplit("おぉこそとのほもろごぞどぼぽよょ",   ""))] = 5
    ### 計算 ### 
    for (i in 3:length(x)) {
        if (PRINT) {
            print(y)
        }
        n = length(y)
        if (n == 2) {
            break
        }
        y = (y[-n] + y[-1])%%10
    }
    ### パーセンテージで出力 ###
    cat(paste("ふたりの相性は、", 10 * y[1] + y[2], "%", " です。", sep = ""))
}
uranai("やべひろゆき", "あおきゆうこ")
uranai("うちだゆうや", "きききりん", PRINT = FALSE)
uranai("たむらゆう", "ふくたじゅんや", PRINT = TRUE)

ところで,元のプログラムで

x <- X[i]
ifelse( x == "あ" | x == "か"| ... | x == "ば" ,y[i] = 1,
ifelse(x == "い"...)...)

というのは,

y[i] = ifelse( x == "あ" | x == "か"| ... | x == "ば" , 1,
ifelse(x == "い"...)...)

などとすべし。

まあ,とにかく,ハッピー・ハッキング!!

 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダミー変数の標準化偏回帰係数 | トップ | ベクトル演算を効率的に使う »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

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