StatsBeginner: 初学者の統計学習ノート

統計学およびR、Pythonでのプログラミングの勉強の過程をメモっていくノート。たまにMacの話題。

Rで忘れがちな書き方(随時追記)

よく忘れることのメモです。

  • NAかどうかの判定にはx==NAとかではなくではなくis.na(x)を使う
  • 要素に含まれるかどうかの判定は、%in%かis.element()を使う。これはデータ全体の中から何かを抽出するときの条件を複数条件にしたい場面でも使えるときがある。(たとえば簡単なところでは、subset()でデータフレームから条件付の抽出をするとき、&で条件を並べなくてもよくなったりとか)
> is.element(3, c(1,2,3))
[1] TRUE
> 3 %in% c(1,2,3)
[1] TRUE
  • {dplyr}でデータフレームを操作した後、as.data.frame()で標準のデータフレームに戻してからじゃないと、別の関数に与えたときにエラーが出る場合がある
  • {data.table}のfread()関数でcsvとかを読み込んだ場合も、それを標準のデータフレームにしてから使わないとエラーが出ることがある
  • factor型のデータをnumericに変えると、factorの中身ではなくレベル(水準)番号が数字になる。
> x <- as.factor(c(1,10,100,1,10,100))
> as.numeric(x)
[1] 1 2 3 1 2 3
  • リストに要素をアペンドするとき、c()関数でできるのだが、付け加える方にlist()をかけとかないといけない
> x1 <- c(1,2,3)
> x2 <- c('a','b','c')
> l1 <- list(x1, x2)
> print(X)
[[1]]
[1] 1 2 3

[[2]]
[1] "a" "b" "c"

[[3]]
[1] "あ"

[[4]]
[1] "い"

[[5]]
[1] "う"

> x3 <- c('あ','い','う')
> l2 <- c(l1, x3)  # これはダメ
> print(l2)
[[1]]
[1] 1 2 3

[[2]]
[1] "a" "b" "c"

[[3]]
[1] "あ"

[[4]]
[1] "い"

[[5]]
[1] "う"

> l3 <- c(l1, list(x3))  # こうする
> print(l3)
[[1]]
[1] 1 2 3

[[2]]
[1] "a" "b" "c"

[[3]]
[1] "あ" "い" "う"
  • データをロング型にしたりワイド型にしたりするのには{tidyr}を使う。ワイドをロングにするのはgather()関数で、ロングをワイドにするのはspread()関数で。
  • ||とか&&は、or/and条件を入れ子にするときに使う。
  • ベクトルの要素が「全て◯◯という値である」という条件を書くシンプルな方法はたぶんない?最大と最小が一致するみたいな書き方をいつもしているのだが。
  • データを「中心化」(平均ゼロにする)したいときは、center()じゃなくて、scale()関数のオプションでscale=Fに設定する。変な話だが。