差分
この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
memo:r [2013/07/25 04:05] hasegawa |
memo:r [2016/07/17 04:22] (現在) |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
{{tag>R tips windows osx}} | {{tag>R tips windows osx}} | ||
====== Rに関するあれこれ ====== | ====== Rに関するあれこれ ====== | ||
+ | |||
+ | ===== VimでR ===== | ||
+ | |||
+ | http://qiita.com/kirishima274/items/56233d5cd830d099b28f | ||
+ | |||
+ | |||
+ | Vim-R-pluginを使う. | ||
+ | |||
+ | NeoBundle 'vim-scripts/Vim-R-plugin' | ||
+ | |||
+ | 以下は, | ||
+ | http://www.lepem.ufc.br/jaa/r-plugin.html#r-plugin-installation | ||
+ | を参考. | ||
+ | |||
+ | ==== vimcomを入れる ==== | ||
+ | |||
+ | ダウンロード | ||
+ | |||
+ | download.file("http://www.lepem.ufc.br/jaa/vimr/vimcom_1.2-6.tar.gz", | ||
+ | destfile = "vimcom_1.2-6.tar.gz") | ||
+ | |||
+ | === MacVimを使わない === | ||
+ | |||
+ | vimcomインストール | ||
+ | |||
+ | install.packages("vimcom_1.2-6.tar.gz", type = "source", | ||
+ | configure.args="--enable-clientserver", | ||
+ | repos = NULL) | ||
+ | |||
+ | 失敗したら,XQuartzを一旦アンインストールして,Homebrew caskから入れ直す. | ||
+ | |||
+ | brew cask install xquartz | ||
+ | |||
+ | VimもHomebrewから入れる | ||
+ | |||
+ | brew install vim --with-client-server --with-lua | ||
+ | |||
+ | |||
+ | === MacVimを使う === | ||
+ | brew install macvim --with-cscope --with-client-server --with-lua --HEAD | ||
+ | |||
+ | |||
+ | === MacVim-Kaoriyaを使う === | ||
+ | install.packages("vimcom_1.2-6.tar.gz", type = "source", | ||
+ | repos = NULL) | ||
+ | |||
+ | ==== その他のRパッケージをインストール ==== | ||
+ | |||
+ | |||
+ | Rのコンソールの出力を色付けて表示 | ||
+ | |||
+ | download.file("http://cran.r-project.org/src/contrib/Archive/colorout/colorout_0.9-9.tar.gz", destfile = "colorout_0.9-9.tar.gz") | ||
+ | |||
+ | install.packages("colorout_0.9-9.tar.gz", type = "source", | ||
+ | repos = NULL) | ||
+ | |||
+ | install.packages("setwidth") | ||
+ | |||
+ | |||
+ | ==== .Rprofileに追記 ==== | ||
+ | |||
+ | if(interactive()){ | ||
+ | library(colorout) | ||
+ | library(setwidth) | ||
+ | options(vimcom.verbose = 1) # optional | ||
+ | library(vimcom) | ||
+ | } | ||
+ | |||
+ | ==== エイリアスを設定 ==== | ||
+ | .zshrcに追記 | ||
+ | |||
+ | # vim-rでHomebrewで入れたVimをVim-R-pluginのオプション付きで使う | ||
+ | alias vim-r='reattach-to-user-namespace /usr/local/bin/vim --servername VIM' | ||
+ | |||
+ | ==== tmuxを入れる ==== | ||
+ | |||
+ | brew install tmux | ||
+ | brew install reattach-to-user-namespace | ||
+ | |||
+ | なお、reattach-to-user-namespaceはtmuxのコピーコマンドでのクリップボード共有に使う。 | ||
+ | |||
+ | 設定は,https://github.com/b4b4r07/dotfiles/blob/master/.tmux.conf を流用させてもらう.この設定の解説は http://qiita.com/b4b4r07/items/01359e8a3066d1c37edc にある. | ||
===== Proxyの設定 ===== | ===== Proxyの設定 ===== | ||
- | プロクシ,プロクシー | + | プロクシ,プロクシー,プロキシ |
Windowsではシステム設定を利用するために,Rの起動オプションに | Windowsではシステム設定を利用するために,Rの起動オプションに | ||
ライン 95: | ライン 177: | ||
===== グラフィックス関連 ===== | ===== グラフィックス関連 ===== | ||
- | ==== ループの途中で画像等を出力 ==== | + | ==== 色 ==== |
- | ループを使って,パラメータ(実験条件)を変えながら計算させることがよくある.そしてその時に,各条件での計算結果(場合によっては過程も)を異なるファイル名で出力したくなる. | + | 2013/07/25 |
- | そのような場合にはeval(parse(text = "実行される文字列"))を使えば良い.そして,textに渡す文字列はpaste関数などで用意する. | + | 標準で入っているカラーパレット |
- | for (i in 1:3) { | + | rainbow(7) |
- | # ファイル名をループ制御変数で変えながらCSVで書き出し | + | heat.colors(7) |
- | eval(parse(text = paste("write.csv(iris[,1:4],file=\"IrisData", i, ".csv\", row.names=F)", sep = ""))) | + | に満足できなくて良いのがないか探したら, |
- | + | http://d.hatena.ne.jp/harapon1012/20120927/1348701606 | |
- | # プロットはprintで囲った方が良い(囲わないと上手く動かないことがある) | + | で良いものが紹介されていた. |
- | print(plot(iris[, 1:4])) | + | library(plotrix) |
- | | + | smoothColors("blue",2,"white",2,"red") |
- | # ファイル名をループ制御変数で変えながらPDFで保存 | + | で青と白の間の色をグラデーションで2つ,白と赤の間の色をグラデーションで2つ,元の3つとあわせて7色の色が用意される. |
- | eval(parse(text = paste("dev.copy(pdf, file=\"IrisData", i, ".pdf\")", sep = ""))) | + | |
- | + | ||
- | # 作図デバイスを閉じる | + | |
- | dev.off() | + | |
- | } | + | |
- | 実行すると,ワーキングディレクトリに | + | |
- | IrisData1.csv,IrisData2.csv,IrisData3.csv,IrisData1.pdf,IrisData2.pdf,IrisData3.pdfというファイルが出力される. | + | |
- | ---- | + | その他参考になるのは http://www.okada.jp.org/RWiki/?R%A4%CB%A4%AA%A4%B1%A4%EB%BF%A7%A4%CE%CC%BE%C1%B0 |
- | + | ||
- | 連番ファイル名を0埋め桁揃えしたい場合,zshのzmvを使うのが便利. | + | |
- | + | ||
- | 参考 http://qiita.com/ponko2@github/items/31af073608aa20fa57e4 | + | |
- | + | ||
- | zmvを使うため .zshrc に | + | |
- | autoload zmv | + | |
- | を記述 | + | |
- | + | ||
- | 上記のPDFファイル(IrisData1.pdf,IrisData2.pdf,IrisData3.pdf)を4桁数字で埋める(IrisData0001.pdf,IrisData0002.pdf,IrisData0003.pdf)には, | + | |
- | zmv 'IrisData(*).pdf' 'IrisData${(l:4::0:)1}.pdf' | + | |
- | とすれば良い. | + | |
- | 2013/07/25追記 | + | |
==== 軸ラベルの工夫 ==== | ==== 軸ラベルの工夫 ==== | ||
ライン 183: | ライン 245: | ||
origin.gg <- ggplot(data, aes(x = OriginLongitude, y = OriginLatitude)) + xlim(kRangeLong) + ylim(kRangeLat) | origin.gg <- ggplot(data, aes(x = OriginLongitude, y = OriginLatitude)) + xlim(kRangeLong) + ylim(kRangeLat) | ||
## 出発地点のヒートマップ | ## 出発地点のヒートマップ | ||
+ | print( | ||
origin.gg + geom_bin2d() + labs(x = "Longitude", y = "Latitude") | origin.gg + geom_bin2d() + labs(x = "Longitude", y = "Latitude") | ||
+ | ) | ||
| | ||
dest.gg <- ggplot(data, aes(x = DestLongitude, y = DestLatitude)) + xlim(kRangeLong) + ylim(kRangeLat) | dest.gg <- ggplot(data, aes(x = DestLongitude, y = DestLatitude)) + xlim(kRangeLong) + ylim(kRangeLat) | ||
## 到着地点のヒートマップ | ## 到着地点のヒートマップ | ||
+ | print( | ||
dest.gg + geom_bin2d() + labs(x = "Longitude", y = "Latitude") | dest.gg + geom_bin2d() + labs(x = "Longitude", y = "Latitude") | ||
+ | ) | ||
+ | |||
+ | テキスト追加レイヤー | ||
+ | annotate("text", label = "Map data(c)OpenStreetMap" | ||
+ | , x = 141.350, y = 43.042, base_size = 0.8 | ||
+ | ) | ||
+ | |||
+ | 因子水準で色を変えた折れ線グラフ(グラフとして適当ではないが) | ||
+ | print( | ||
+ | ggplot(data.frame(iris, id = 1:nrow(iris)), aes(x = id, y = Petal.Length, colour = Species)) | ||
+ | + geom_point() | ||
+ | + geom_line(aes(group = interaction(Species))) | ||
+ | |||
+ | |||
+ | とても参考になる http://d.hatena.ne.jp/triadsou/20100528/1275042816 | ||
+ | |||
+ | ==== ループの途中で画像等を出力 ==== | ||
+ | ループを使って,パラメータ(実験条件)を変えながら計算させることがよくある.そしてその時に,各条件での計算結果(場合によっては過程も)を異なるファイル名で出力したくなる. | ||
+ | |||
+ | そのような場合にはeval(parse(text = "実行される文字列"))を使えば良い.そして,textに渡す文字列はpaste関数などで用意する. | ||
+ | for (i in 1:3) { | ||
+ | # ファイル名をループ制御変数で変えながらCSVで書き出し | ||
+ | eval(parse(text = paste("write.csv(iris[,1:4],file=\"IrisData", i, ".csv\", row.names=F)", sep = ""))) | ||
+ | | ||
+ | # プロットはprintで囲った方が良い(囲わないと上手く動かないことがある) | ||
+ | print(plot(iris[, 1:4])) | ||
+ | | ||
+ | # ファイル名をループ制御変数で変えながらPDFで保存 | ||
+ | eval(parse(text = paste("dev.copy(pdf, file=\"IrisData", i, ".pdf\")", sep = ""))) | ||
+ | | ||
+ | # 作図デバイスを閉じる | ||
+ | dev.off() | ||
+ | } | ||
+ | 実行すると,ワーキングディレクトリに | ||
+ | IrisData1.csv,IrisData2.csv,IrisData3.csv,IrisData1.pdf,IrisData2.pdf,IrisData3.pdfというファイルが出力される. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | 連番ファイル名を0埋め桁揃えしたい場合,zshのzmvを使うのが便利. | ||
+ | |||
+ | 参考 http://qiita.com/ponko2@github/items/31af073608aa20fa57e4 | ||
+ | |||
+ | zmvを使うため .zshrc に | ||
+ | autoload zmv | ||
+ | を記述 | ||
+ | |||
+ | 上記のPDFファイル(IrisData1.pdf,IrisData2.pdf,IrisData3.pdf)を4桁数字で埋める(IrisData0001.pdf,IrisData0002.pdf,IrisData0003.pdf)には, | ||
+ | zmv 'IrisData(*).pdf' 'IrisData${(l:4::0:)1}.pdf' | ||
+ | とすれば良い. | ||
+ | 2013/07/25追記 | ||
- | 参考になりそう http://d.hatena.ne.jp/triadsou/20100528/1275042816 | ||
===== EclipseでR ===== | ===== EclipseでR ===== |