R

R は遅延評価!?

R

R で関数の実行時間を測定する system.time は、 system.time(rnorm(10000000)) のように使う。「ふつう」のプログラミング言語の感覚だと、rnorm が評価されてから system.time が呼び出されるはず。経過時間を測ろうと思ったら、rnorm を評価する前に現在…

R メモ

R

指定した条件を満たす要素の数を数える。 m <- cbind(0:20, 1:3) sum(m[,1] %% 2 == 0 & m[,2] == 2) # => 3 sum(c(NA, NA, TRUE)) # => NA sum(c(NA, NA, TRUE), na.rm=T) # => 1 NA が含まれている場合、na.rm=T にしないと NA になってしまう。

mapply について, list 要素の置き換え

R

mapply について mapply は、Haskell で言うところの zip して map。 > mapply("*", 1:10, c(-1, 1)) [1] -1 2 -3 4 -5 6 -7 8 -9 10 list の要素の置き換え [[]] と [] の違いについて、まだ腑に落ちていないのだが、実際の使い方としては a <- list(1:10, …

サンプリングのアルゴリズム

n個あるうちからk個取り出したい。R だと sample 関数を使うだけなのだが、その仕組みが気になる。重複を許す場合(with-replacement)は簡単で、1からnまでの一様乱数をk個作るだけ。計算量はO(k)。重複を許さない場合はどうする? ソースコードを見る前に考え…

R は column major, apply の第2引数, 代入演算子

R

C 系言語を普段使っている私が、R で引っかかったところをメモ。 R の array は column major C 言語だと、row major。 a <- array(1:24, c(2, 3, 4)) として作った場合、a[1,1,1], a[2,1,1], a[1,2,1], a[2,2,1], a[1,3,1]....という順番になる。matrix も…