Posted at

R言語を扱う際のtips by Rstatistics.net

More than 3 years have passed since last update.

日本のR利用者の中であまり話題になっていないような気がしますが、Rstatistics.netが公開した"60 R Language Tips"というのが良い・自分のためになるので気になったところを紹介。

PDFが公開されているので、詳しくは原文をご覧ください。


1. 因子になった数値の変換にはas.numeric()関数は使用しない

ときどきですが、数値であるはずのデータが要素データとされてしまうことがあります。その際、数値に変換するas.numeric()関数を使うと、値が変わってしまいます。

c(1, 2.4, NA) %>% str()

# num [1:3] 1 2.4 NA
c("1", "2.4", "NA") %>% as.factor() %T>% str() -> tmp
# Factor w/ 3 levels "1","2.4","NA": 1 2 3

as.numeric(tmp)

# [1] 1 2 3

これはtmpというベクターがカテゴリーデータであるため、水準の順番に数値を与えているために生じる問題です。

as.character()関数で一度文字列データに変換し、再度as.numeric()関数による変換をすることでこの問題を回避できます。

as.character(tmp) %>% as.numeric()

# [1] 1.0 2.4 NA

今度はきちんと元の数値になりました。


11. セッション情報を表示するsessionInfo()関数

使用中のRのバージョンや使用したパッケージについて知りたいときにsessionInfo()関数が便利です。

sessionInfo()

# R version 3.1.2 (2014-10-31)
# Platform: x86_64-apple-darwin13.4.0 (64-bit)
#
# locale:
# [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#
# attached base packages:
# [1] graphics grDevices utils datasets stats methods base
#
# other attached packages:
# [1] rmarkdown_0.5.1 devtools_1.7.0 ggplot2_1.0.1 magrittr_1.5 stringr_0.6.2 knitr_1.9
#
# loaded via a namespace (and not attached):
# [1] colorspace_1.2-6 cowsay_0.2.9.999 digest_0.6.8 DYM_0.1 evaluate_0.5.5 formatR_1.1 fortunes_1.5-2
# [8] grid_3.1.2 gtable_0.1.2 htmltools_0.2.6 MASS_7.3-40 memoise_0.2.1 munsell_0.4.2 plyr_1.8.1
# [15] proto_0.3-10 Rcpp_0.11.5 reshape2_1.4.1 RJSONIO_1.3-0 scales_0.2.4 tools_3.1.2

リストで値が返ってくるので、各項目についてアクセスするにはこのように。

sessionInfo()$R.version$version.string

# [1] "R version 3.1.2 (2014-10-31)"

また同様の機能はdevtools::session_info()も備えています。さらに似たような機能ですがtips 54でも紹介されています。


34. 複数パッケージの読み込みを一行で

通常、パッケージの読み込み(require()あるいはlibrary())で指定できるパッケージの数は一つですが、次のようにすると複数のパッケージを一度に読み込むことが可能です。

lapply(c("ggplot2", "gridExtra"), require, character.only = TRUE)


56. パッケージの情報や関数を一覧表示させる

関数のヘルプを表示するには?関数名あるいはhelp(関数名)ですが、パッケージ全体の関数について知りたいときなどに便利なtips

library(help = ggplot2)

library()関数の引数helpに情報を得たいパッケージ名を与えることで各種情報や関数が表示されます。

Enjoy!