* システム
** 環境にある変数をすべて削除する
> rm(list=ls(all=TRUE))
* ファイル関係
** 関数が定義されているファイルを得る
Rのライブラリを書いていると、そのソースファイルが存在するパスを知りたい場合がある。
Rubyなどで__FILE__と定義されるやつ。
Rの場合、ある関数funcがlib/hoge.Rで定義されているとすると、
> paste(".", getSrcDirectory(func), getSrcFilename(func), sep="/") # => "./lib/hoge.R"
で、得られる。R3.0.2以降じゃないとダメかもしれない。
あと、R -f hoge.Rと実行すると上手く動かないようなので注意。
** require()とlibrary()のちがい
require()は、既に読み込まれていた場合は読み込み直さないらしい。
詳しくはネットでディグってください。
** パッケージ
** パッケージをコマンドラインからインストールする
> install.packages("lda")
* list
** RubyのArray.mapに当たる機能
> lappry(1:10, function(x){ x+1 } ) # 1:10の各要素をインクリメントしたリストを返す
> lapply(list(1:3, 5:10), median) # 1:3, 5:10それぞれにmedianを適用したリストを返す
** left fold
> Reduce(function(x,y){ x+y }, 1:10, 100)
* Plot関係
** 利用可能なフォントのfamilyを取得する
>names(postscriptFonts())
** 横長のグラフをつくるなど、縦横比を変える
>dev.copy2eps(file=dest, width=10, height=4)
>dev.off()
horizontal=T / Fとすると、なにか変わるわるかもしれない。
** ggplotを各ファイル形式で出力
>|R|
ExportPlot <- function(gplot, filename, width=2, height=1.5) {
# Export plot in PDF and EPS.
# Notice that A4: width=11.69, height=8.27
ggsave(paste(filename, '.pdf', sep=""), gplot, width = width, height = height)
postscript(file = paste(filename, '.eps', sep=""), width = width, height = height)
print(gplot)
dev.off()
png(file = paste(filename, '_.png', sep=""), width = width * 100, height = height * 100)
print(gplot)
dev.off()
}
||<
(https://gist.github.com/sheymann/2399659)
* 環境構築
** 日本語でlabelやcaptio書けるようにする
http://d.hatena.ne.jp/kingqwert/20120711/p1
* decompose
実装を読んでみた。
trend成分は、移動平均。前後freq日で移動平均をとっている。
seasonal成分は、曜日ごとの平均値。
random成分は、観測値からtrend、seasonal成分を取ったもの。
(typeがadditiveなら引いたもの。multiplicativeなら割ったもの。)
* Rの気持ち悪い所リスト
- シンボルにピリオドを含ませることができる
- オブジェクトの中身にアクセスする際、taro$ageと書き、これはtaro$agなどと省略可能
- 代入は<-を使う。=も使える。
- 呼び出し元のスコープの変数に値をbindする場合、<<-という演算子を使う。
- 環境を保存できる。カレントディレクトリに.RDataとして保存される。
* 実行引数, コマンドライン引数 (command line arguments)
$ R --args 1 'hoge' fuga
> args <- commandArgs(trailingOnly = T)
> print(args)
* パッケージ作成
** 「Rd ファイルには、空でない\title がなければならなりません」
/manを消せばいい。
以下のパッケージが必要"devtools", "roxygen2", "testthat", "knitr"
これで、githubのようなCARN以外のパッケージもインストールできるようになる。
* 遅延評価
潜在的なバグが、遅延評価のため発現しない
* 数列
逆順も生成できる。うっかりしていると死ぬ
* Cとの連携
行列のやりとりで死亡
サイズのチェックしよう
* list
英検準2級にはつらいスペルミス。
- result$coefficients
- result$coeficients
S4クラスを作りましょう。
* vector or matrix
ベクトルだったら v1 %*% v2でスカラーが得られるが、
行列の場合 v1 %*% m1で、スカラーにも行列にもなりうる。
m1が1行N列かN行1列の時、v1 %*% m1とv1 %*%
t(m1)で、スカラーかmatrixかが変わる。
油断していると大きな違いになるので、注意。
さらに、matrixを[,1:10]のように部分的に抽出する際、[,1:1]だとベクトルとして取り出される。
この時、rowSumsが使えなくなるので、rowSums(mtr[,1:x])というコードでは、
xが1にならないように注意する必要がある。xの時だけ止まってしまう。
* tips
- options(error=browser)
- constAssign
- identical(f,g)で関数fとgを比較