* システム ** 環境にある変数をすべて削除する > 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を比較