算額あれこれ

算額問題をコンピュータで解きます

2018-06-01から1ヶ月間の記事一覧

文字列としての連結と"+"演算子

"+" を文字列連結演算子とする場合"+" = function(e1, e2) { if (is.numeric(e1) && is.numeric(e2)) { base::"+"(e1, e2) } else { paste0(e1, e2) }} > "abc" + "12345" + "あいうえお"[1] "abc12345あいうえお"> 123456 + "numeric"[1] "123456numeric"> …

文字列としての連結と"&"演算子

文字列と文字列の連結は,言語によって異なる記号が演算子として使われているが,R では二項演算子ではなく paste 関数,paste0 関数が使われる。 > paste("asd", "poi", sep="")[1] "asdpoi" > paste0("asd", "poi")[1] "asdpoi"> paste0(123, "asd")[1] "1…

大きい数の積や商(その2)

超幾何分布 要因 a, b が独立な場合,以下のような分割表が得られる確率を求める B not(B) sumA x o mnot(A) (k-x) o nsum k o (m+n)超幾何分布により,求める確率は xCm * xCk-x / m+nCkR の dhyper の引数はちょっと変で(?),x が生じる確率は dhyper(x…

大きい数の積や商

二項分布 B(x, n, p) = nCx p^x (1-p)^(n-x) の計算R では,dbinom(x, n, p) で速く,簡単に求まるこれを,自分で計算してみるとどうなるかをやってみる。式をそのまま記述すると以下のようになる。options(digits = 15)f = function(x, n, p) { return(choo…

ダミー変数を作る

factor 変数の場合 > fac = factor(c("c", "a", "b", "b", "a", "c", "b"))> z = levels(fac)> t(sapply(fac, function(x) z %in% x))[, -1] + 0 [,1] [,2][1,] 0 1[2,] 0 0[3,] 1 0[4,] 1 0[5,] 0 0[6,] 0 1[7,] 1 0 数値変数の場合> num = c(1, 3, 2, 1, 3…