Rでダミー変数をつくる。makedummies 関数で。
●2015年12月28日 追記
makedummies 関数の作者の方から、コメントで情報をいただきました。
以下のように、 install_github
で
簡単に makedummies が使えるようになっています。
## devtools がなければインストール→ install.packages("devtools") library(devtools) install_github("toshi-ara/makedummies")
●2016年1月3日 追記
makedummies がさらに便利になりました。詳細は↓です。
http://hikaru1122.hatenadiary.jp/entry/2015/12/30/213032
以上、追記おわり。
今回のモチベーション
最近、ずっとカテゴリカルデータをいじっていて、ダミー変数を作る機会が出てきました。Rでダミー変数を作るのには、パッケージがあったはずだと思い、調べていたら、こちらの2つがみつかりました。
dummyVars についてはこちら。
estrellita.hatenablog.com
dummy.data.frame についてはこちら。
qiita.com
makedummies 関数
ただ、これらはダミー変数を作るときに基準となる変数もそのまま作ります。なので、基準となる変数のダミーはいりません。勝手に基準となるダミーを作らない関数がないかと探ししたところ、ありました。
それがこちらの makedummies 関数です。
github.com
作ってくださった方に感謝です。データフレームしか受け付けないので、その点だけ注意すればダミー変数が簡単につくれます。github のソースをコピーして、適当なファイルに保存して、適当なフォルダに入れておきます。今回は、makedummies.R というファイルにして、getwd()
で表示されるフォルダに入れています。
source("makedummies.R") > d <- read.delim("clipboard") > str(d) 'data.frame': 18 obs. of 2 variables: $ y: int 5 7 4 6 6 6 6 6 7 5 ... $ x: int 1 2 3 1 2 3 1 2 3 1 ... > head(d) y x 1 5 1 2 7 2 3 4 3 4 6 1 5 6 2 6 6 3
x のダミー変数を作りたいと思います。x が2のときに「1」となるダミー、x が3のときに「1」となるダミーを作ります。1は基準なのでダミーはいりません。ダミー変数としたいものは、因子型である必要があるので、因子型に直します。
> d$x <- factor(d$x) > str(d) 'data.frame': 18 obs. of 2 variables: $ y: int 5 7 4 6 6 6 6 6 7 5 ... $ x: Factor w/ 3 levels "1","2","3": 1 2 3 1 2 3 1 2 3 1 ...
順序付きのカテゴリカル変数でもOKです。あとは makedummies 関数に入れるだけ。自動的に変数名がつきます。無事、基準となる変数はダミーが作られていません。ちなみに、複数の因子型変数がある場合、全部ダミー変数を作ります。
> d2 <- makedummies(d) > head(d2) y x_2 x_3 1 5 0 0 2 7 1 0 3 4 0 1 4 6 0 0 5 6 1 0 6 6 0 1
私には重宝する関数です。改めて感謝。
ちなみに、カテゴリカルデータの分析はこちらの2冊が勉強なりました。
- 作者: 藤井良宜,金明哲
- 出版社/メーカー: 共立出版
- 発売日: 2010/04/22
- メディア: 単行本
- クリック: 13回
- この商品を含むブログ (3件) を見る
- 作者: 太郎丸博
- 出版社/メーカー: ナカニシヤ出版
- 発売日: 2005/07
- メディア: 単行本
- 購入: 1人 クリック: 26回
- この商品を含むブログ (12件) を見る
Rによる級内相関係数(ICC)の2つの出し方
2~3ヶ月前から、マルチレベル分析*1を学んでいます。分析自体はできます(便利なことに、コード1行でできるので)。しかし、手持ちのデータでマルチレベル分析を使うべきなのかどうか、迷います。そんなときは級内相関係数(ICC)を確認するのが一般的なようです*2。例によって、ウェブ上で情報収集しました*3。
使うデータ
あるサービスの500人分の満足度を1~7で集計したもの。性別(男性0、女性1)も記録している。
> cs <- read.delim("clipboard") > head(cs) gender manzoku 1 0 5 2 0 6 3 0 4 4 0 5 5 0 4 6 1 6
ICCの出し方
1.lmerTest または lme4 パッケージのlmer
を使う。
切片だけの変量効果を調べます。summary()を使って、Random effectsのVarianceを計算してICCを出します。すなわち、
gender の Variance ÷(gender の Variance+ Residual の Variance)
です。今回はとっても低い値になります。マルチレベル分析をする必要はなさそうです。
> library(lmerTest) > icc_by_lmerTest <- lmer(manzoku ~ 1 + (1|gender), data = cs) > summary(icc_by_lmerTest) ※前略 Random effects: Groups Name Variance Std.Dev. gender (Intercept) 2.497e-14 1.58e-07 Residual 1.742e+00 1.32e+00 ※後略
2.ICCパッケージのICCest
を使う。
x がグループ、y が対象となるデータ、data がデータフレームです。x は因子型でないと怒られます。
> library(ICC) > icc_by_ICCest <- ICCest(x = gender, y = manzoku, data = cs) Warning message: In ICCest(x = gender, y = manzoku, data = cs) : 'x' has been coerced to a factor > icc_by_ICCest <- ICCest(x = factor(gender), y = manzoku, data = cs) > icc_by_ICCest $ICC [1] -0.002186884
なんだか、lmerTest を使った計算方法と結果が違います。でも、とても小さい値なので、やはりマルチレベル分析をする必要はなさそうです。なお、ICC の数値が違います。計算方法が違うので、どちらが正しいものかはわかりません…。今回はどちらも小さな値になったので、よかったものの、微妙な値だったらどうしようか…。
番外 psychパッケージのICC
を使う。
psych パッケージの説明を読んだんですが、データの形式がちょっと違っていたので、面倒そうでやめました。
参考にしたページ
こちらのブログのエントリーには多くの資料のリンクがまとめてあり、助かりました。 http://mizumot.com/lablog/archives/179
なお、マルチレベル分析の基本的なところはこちらがたいへん勉強になります。
www.slideshare.net
読了 『完全独習 ベイズ統計学』(2015)
個人的に大きなイベントが終わり、うまくいきそうなので、学びと研究を再開です。
リハビリとして、今年11月に出版された『完全独習 ベイズ統計学入門』を読んで、ブログを書きます。本の詳細は下をクリックしてください。
- 作者: 小島寛之
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2015/11/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
『図解・ベイズ統計「超」入門』より、もう少し計算などを使ってベイズ統計を学んでいく本のように感じました。したがって、『図解・ベイズ~』などのベイズ統計を紹介する本を1冊でも読んだことがある人は苦しまずに読みきれると思います。
図解・ベイズ統計「超」入門 あいまいなデータから未来を予測する技術 (サイエンス・アイ新書)
- 作者: 涌井貞美
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2013/12/18
- メディア: 新書
- この商品を含むブログ (13件) を見る
『完全独習 ベイズ~』は面積図などを使って、あの手この手でわかりやすく説明をしてくれます。『基礎からのベイズ統計学』がさっぱりわからないという方は、この『完全独習 ベイズ~』を読んでみるといいのではないかと思いました。逆に『基礎からの~』を読んだ方は必要がないというか、『完全独習 ベイズ~』の第2部を立ち読みでくらいでいいんじゃないかと。
基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門
- 作者: 豊田秀樹
- 出版社/メーカー: 朝倉書店
- 発売日: 2015/06/25
- メディア: 単行本
- この商品を含むブログ (3件) を見る
今回の本でもっともよかったのは最後のブックガイドです。ベイズ統計への理解を深めるために次はこういう本を読めばいいのだな、と教えてくれます。その中の1冊にチャレンジしたいと思います(RやStan関連の本の紹介はありません)。
とにかくこれから勉強したい方にこういうのがあるよ、とオススメできる本が増えたのは嬉しいです。
統計学エンドユーザーのための JAGS 入門
岩波データサイエンス vol.1 のどこかのページに「初心者はJAGS(BUGS)」と書いてあったので*1、こつこつ学び始めています。世の中は Stan 大人気ですが、気にしない…。まず JAGS に慣れてから Stan をやります…。本エントリーは、前回のエントリーと多くがかぶっています。
今回は、次のページを参考にさせていただいています。
生態学のデータ解析 - R で JAGS (rjags 編)
http://hosho.ees.hokudai.ac.jp/~kubo/ce/RtoJags.html
生態学のデータ解析 - JAGS 雑
http://hosho.ees.hokudai.ac.jp/~kubo/ce/JagsMisc.html
分析に使用したのは、JAGS 4.0.0 および rjags 4.4 です。
JAGS と rjags のインストール
JAGS と rjags はそれぞれ別にインストールします。JAGS 3.0 系 をインストールしていて、rjags 4.4 にしていた場合は動きません。JAGS も4にする必要があります。
JAGS はこちらから .exe をダウンロードできます。
http://sourceforge.net/projects/mcmc-jags/files/
rjags はいつもの install.packages でOKです。
分析の手順
1.データの準備
今回は先ほどの「RでJAGS(rjags 編)」のデータを使用しました。上記ページにある csv ファイルから、ページのとおりにデータをセットします。JAGSに渡すデータはリスト形式である必要があります。
2.モデルを作る
「RでJAGS(rjags 編)」にあるモデルを自分なりにいじってみました。いまのJAGSマニュアルによると、行末にセミコロンは不要のようです。モデルを作る前に図解しました。これも岩波データサイエンスにそうしろ、と書いてあったように思います。分布の形はテキトーです*2。
さて、モデルです。ロジスティック回帰でリンク関数はロジットリンクです。詳しくはみどりぼん第6章を参照してください。
Model <-" model{ for (i in 1:N) { Positive[i] ~ dbin(p[i], Total[i]) logit(p[i]) <- z[i] z[i] <- beta[1] + beta[2] * Logdose[i] } beta[1] ~ dnorm(0, tau) beta[2] ~ dnorm(0, tau) tau ~ dgamma(1.0E-6, 1.0E-6) } "
追記2015年11月20日
そういえば、JAGS の dnorm の分散は逆数でした。
tau <- 1/(sd*sd)
sd ~ dgamma(1.0E-3, 1.0E-3)
がより正しい書き方なのかな…?
また、twitter にてアドバイスをいただきました。
一様分布や半コーシー分布のほうがよい、とのことです。
ありがとうございます。
いちばんの変更点は tau の事前分布です。一度、同じように dgamma(1.0E-3, 1.0E-3) でやってみたのですが、うまく行きませんでした。代わりに、dgamma(1.0E-6, 1.0E-6) を使いました。
その理由は2つあります。
(1)JAGS 4.0 マニュアルに載っていた例で dgamma(1.0E-6, 1.0E-6) が使われていたこと
(2)前回のエントリーで dgamma(1.0E-6, 1.0E-6) を使ってやり直したら、Stan とほぼ同じ結果が得られたこと
です。1.0E-3 と 1.0E-6 で結果が変わるのってシビア。事前分布って難しい。
モデルを書いたら、書き出します。
writeLines(Model, con ="testModel.txt") # 拡張子は特に不要ですが、いちおう。
3.MCMCする
モデルを jags オブジェクトにしていきます。
# rjags のロード。 library(rjags) # jags モデルを作る。 testModel <- jags.model(file = "testModel.txt", data = list.data, n.chain = 3)
jags.model の file =
は別ファイルである必要があります。なので、先ほど書きだした次第です。次にバーンイン、そして本格的なサンプリングを行います。n.chain は2以上でないと、後で Gelman & Rubin 収束診断指標のグラフが描けないようなので、3にしています。初期値は設定していません。まだ理解できていないので。
では、本格的なMCMCサンプリングを行います。
# バーンイン期間のための試運転。 update(testModel, n.iter = 1000) # 本番。MCMC サンプルを kekka に収める。 kekka <- coda.samples( testModel, variable.names = c("beta[1]", "beta[2]", "tau"), n.iter = 20000)
coda.samples
の variable.names では結果で見たいパラメータを文字列として指定します。これで、下ごしらえは終わりました。rjags パッケージで使うのは、jags.model
, update
, coda.samples
の3つだけです。writeLines
は普通に使えます。
結果を見る。
収束診断をします。codamenu()
でメニューを選びながら、確認します。引数はいらないです。メニューで「2→kekka(MCMCサンプリングを格納したオブジェクト)→2→2」とするとGelman & Rubin の指標が見られます。1.1 より下なので、収束しているようです。他にもcodamenu()
でいろいろ指標を選べます。
Potential scale reduction factors: Point est. Upper C.I. beta[1] 1.01 1.02 beta[2] 1.01 1.02 tau 1.00 1.00
図でも確認します。plot(kekka)
です。
推定値は summary(kekka)
で確認します。
> summary(kekka) Mean SD Naive SE Time-series SE beta[1] -5.99179 1.10916 0.0045281 0.053419 beta[2] 1.18754 0.19647 0.0008021 0.009398 tau 0.06042 0.07121 0.0002907 0.001165
「RでJAGS(rjags 編)」ページに書いてある「真の値」は、 beta[1] = -5.0、beta[2] = 1.0 です。けっこう近づきました。tau だけはダメでした。図示します。
少しずつ、JAGS に慣れてきたようです。今後、みどりぼんや岩波データサイエンスの例にも取り組んでいきたいと思います。
参考文献
JAGS マニュアル http://sourceforge.net/projects/mcmc-jags/files/Manuals/4.x/
rjags マニュアル https://cran.r-project.org/web/packages/rjags/rjags.pdf
生態学のデータ解析 - R で JAGS (rjags 編) http://hosho.ees.hokudai.ac.jp/~kubo/ce/RtoJags.html
生態学のデータ解析 - JAGS 雑 http://hosho.ees.hokudai.ac.jp/~kubo/ce/JagsMisc.html
岩波データサイエンス
- 作者: 岩波データサイエンス刊行委員会
- 出版社/メーカー: 岩波書店
- 発売日: 2015/10/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
みどりぼん
データ解析のための統計モデリング入門――一般化線形モデル・階層ベイズモデル・MCMC (確率と情報の科学)
- 作者: 久保拓弥
- 出版社/メーカー: 岩波書店
- 発売日: 2012/05/19
- メディア: 単行本
- 購入: 16人 クリック: 163回
- この商品を含むブログ (25件) を見る
DBDA2
Doing Bayesian Data Analysis, Second Edition: A Tutorial with R, JAGS, and Stan
- 作者: John Kruschke
- 出版社/メーカー: Academic Press
- 発売日: 2014/11/17
- メディア: ハードカバー
- この商品を含むブログを見る
JAGS と Stan と lm
ここ最近、GLM や GLMM の学び直しをしていました。みどりぼんも2周目になり、6~7割は理解できるようになったと思います。そこで、唐突ですが3ヶ月ほど前に Stan&Rstan でやった、単回帰分析を JAGS&rjags でやります。元ネタ(?)はこちら。 hikaru1122.hatenadiary.jp
JAGS を使うにあたって参考にした書籍はこちら(以下、DBDA2 と呼びます)。また、JAGSのユーザーマニュアルもざっと読みました。
Doing Bayesian Data Analysis, Second Edition: A Tutorial with R, JAGS, and Stan
- 作者: John Kruschke
- 出版社/メーカー: Academic Press
- 発売日: 2014/11/17
- メディア: ハードカバー
- この商品を含むブログを見る
DBDA2 の第8章でやっと JAGS を使った分析例が出てきます。DBDA2 による JAGS を使ったベイズ推定の手順は次のとおりです*1。勝手に3つの段階「準備する→MCMCする*2→結果を見る」にわけてみました。
<準備する>
1.分析するデータを準備する。
2.リスト形式でまとめる。…A
3.モデルを作る。
4.モデルを書き出す。…B
5.(初期値を設定する…C)
※5は必ずしも必要ではない。
<MCMCする>
1.JAGSにすべての情報(A,B,C)を渡す。
→ rjags::jags.model
を使う。
2.バーンイン期間のために空回しする。
→ rjags::update
を使う。
3.結果を記録する
→ rjags::coda.samples
<結果を見る>
・収束しているかどうか確認する。
→ 著者が用意してくれた diagMCMC
を使う*3。
・事後分布を確認する。
→ mode, median, mean を確認。mode がいちばんいいけど、不安定なことももある。median がたいていいちばん安定している。
→ 著者が用意してくれた plotMCMC
を使う*4。
では、やってみます。分析するデータは「アイスクリーム統計学」からお借りします。
http://kogolab.chillout.jp/elearn/icecream/chap4/sec1.html
<準備する>
icecream <- read.delim("icecream.txt") kyaku <- icecream$kyaku kion <- icecream$kion Ntotal <- length(kyaku) # JAGS に渡すデータをリスト形式で作る。 bunsekiData <- list( kyaku = kyaku, kion = kion, Ntotal = Ntotal ) # モデルを作る。 Model <-" model{ for(i in 1:Ntotal){ kyaku[i] ~ dnorm(mu[i], tau) mu[i] <- alpha + beta * kion[i] } alpha ~ dnorm(0, 1.0E-4) #事前分布はこれでいいの? beta ~ dnorm(0, 1.0E-4) #事前分布はこれでいいの? tau ~ dgamma(1.0E-3, 1.0E-3) #事前分布はこれでいいの? } " #モデルを書き出す。 writeLines(Model, con = "icecreamModel.txt")
<MCMCする>
#rjags をロード。 library(rjags) # jagsオブジェクトを作る。初期値は設定せず、おまかせ。 haahaa <- jags.model(file = "icecreamModel.txt", data = bunsekiData, n.chains = 3, n.adapt = 500) # バーンイン期間のための空回し。 update(haahaa, n.iter = 5000) # MCMCサンプルを kekka に収める。知りたいパラメータは alpha(切片)と beta(偏回帰係数)。 kekka <- coda.samples(haahaa, variable.names = c("alpha", "beta"), n.iter = 100000)
<結果を見る>
source("DBDA2E-utilities.R") # これは DBDA2 の付録で付いてくる。 # DBDA2 著者作成の関数で収束診断。 diagMCMC(codaObject = kekka, parName = "alpha") diagMCMC(codaObject = kekka, parName = "beta") # DBDA2 著者作成の関数で事後分布を見る。mean, mode, median をそれぞれ見てみる。 par(mfrow=c(2,3)) plotPost(kekka[,"alpha"], main = "alpha", xlab = bquote(alpha), cenTend = "mean") plotPost(kekka[,"alpha"], main = "alpha", xlab = bquote(alpha), cenTend = "mode") plotPost(kekka[,"alpha"], main = "alpha", xlab = bquote(alpha), cenTend = "median") plotPost(kekka[,"beta"], main = "beta", xlab = bquote(beta), cenTend = "mean") plotPost(kekka[,"beta"], main = "beta", xlab = bquote(beta), cenTend = "mode") plotPost(kekka[,"beta"], main = "beta", xlab = bquote(beta), cenTend = "median")
収束はしているようです(下図のそれぞれ左上と左下)。
切片と係数は次のとおりです。それぞれ3つ出してみます。
median を採用するとしたら、回帰式は
ということですよね。
同じデータを lm
でやった結果は次のとおりです。
> kekka_lm <- lm(kyaku ~ kion, data=icecream) > summary(kekka_lm) Call: lm(formula = kyaku ~ kion, data = icecream) Residuals: Min 1Q Median 3Q Max -47.969 -17.709 -1.218 17.413 51.031 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -229.98 73.79 -3.117 0.00596 ** kion 17.25 2.30 7.499 6.08e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 29.54 on 18 degrees of freedom Multiple R-squared: 0.7575, Adjusted R-squared: 0.744 F-statistic: 56.23 on 1 and 18 DF, p-value: 6.082e-07
Stan での結果も再掲します。
mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat alpha -230.75 0.57 80.23 -389.66 -282.82 -230.41 -178.89 -72.06 19789 1 beta 17.27 0.02 2.50 12.32 15.66 17.26 18.90 22.23 19771 1
Stan&Rstan でやると lm とほぼ同じ結果が得られたんですが、今回の JAGS だとなんか違います。事前分布の設定が悪かったのかな…。それとも初期値の設定が必要だったのか。それとも分析するデータが少なすぎるとか。やっとモデルを作る、見るのに慣れてきたと思ったら、また次の難問が出てきました。厳しい…。
しかし、Stan よりは JAGS のほうがとっつきやすい気がします。しばらく慣れ親しんでみようと思います。
「ドットなしRprofile」に気をつけよう。最近の R 事件簿
ここ1~2週間、R関連の不具合で消耗していました。たぶん、私のような憂き目にあう人はいないかと思いますが、いちおう備忘録として書いておきます。
1.以前動いていた Rstan が動かない。
glmmstan が便利そうだなと思って、使ってみたのですが、コンパイルエラーで止まりました。windows10 にアップグレードする前にはちゃんと動いていたのですが…。TJOさんのブログ(↓)を読んで、自分の設定に間違いながないことを確認。
先週土曜日の夜から日曜日の夕方まで解決策を探しました。R や RStudio の再インストールを数度。古い情報ですが、R を半角スペースのあるディレクトリにインストールしてはダメ、というものあったので、そのとおりにして再インストールもしました。
入れなおした R でやっと Rstan が動き出したのに喜んで、RStudio で同じことやったら動かないという不可解な現象も起きました。何度かトライしているうちに、自分が「Rprofile」をいじっているのがダメなのでは、という結論に至りました。
R を起動したときに作業するディレクトリに自動的に移動したり、自動的にパッケージを呼び出すようにするアレです。
参考はこちら。
Rprofile | パッケージの自動ロードなど
通常、そういう設定はホームディレクトリに「.Rprofile(ドットあり)」を作ってその中に書くものですが、私は「Rprofile(ドットなし)」に setwd(指定場所)
を書いていたのです。どっちでもいいじゃん、と思っていたので。
実際、Rstan を使わない場合、ドットなしの Rprofile に setwd() を書いても問題なく動いていたので、まったく気づきませんでした。ちなみに、ドットなし Rprofile は R をインストールした先の /library/base/R
の中にあります。
そこで、ちゃんとホームディレクトリに .Rprofile を作って、そこに setwd() を書いて保存しました。glmmstan も無事動きました。
2.Sublime Text3から、Rgui が呼び出せなくなった。
前回のブログで書いたネタですが(↓)、
Sublime で R のコードを書いて、Ctrl+Enter を押しても、まったく反応しなくなりました。ネットの海をさまよい歩いても解決策が見つからず。何回か再インストールしてもダメでしが、1日放置すると元に戻りました。原因不明のまま解決。
3.RStudio で日本語を使うと落ちる。再現率100%。
この現象を人に言うと、たいていビックリされます。変数名や変数に日本語がなくても、plot(y ~x , data = z, main ="日本語だよ")
としても100%再起動されます。それを実際に見せると、またビックリされます。現在、解決策不明です。
以上、R まわりの事件簿でした。どなたか3についての解決策をお教えください…。なお、glmmstan はこちらです。たいへん便利です。
RStudio より軽くてサクサク。Sublime で R コンソールと連携
【追記 2016年4月26日】
sulibme text3 で R-box が動くという情報をいただいています。
コメント欄をご参照ください。
【追記 2016年3月24日】
私の環境(windows10, sublime text3)ではうまく動いていません。
現在はRstudio 使ってます…。
このブログの統計分析については、いっしょに学べる仲間・先輩・上司がいるような「プロ環境(?)」にいる方ではなくて、普段は孤独に、もしくは趣味的に楽しくRと格闘している非ITエンジニアな方(つまりは自分なんですけど)向けに書いています。
さて先日、RStudio で日本語の扱いが変になってしまいました。変数の中に日本語が入っていると、落ちてしまうのです。変数名をローマ字にしても、変数の中に日本語があればダメ。少し前までは平気でした。ひょっとしたら、Windows10 へのアップグレードのせいかな…。
原因はわからないですが、快適な分析環境に身をおきたいので、RStudio 以外の環境を作ることにしました。以前のエントリーで、Sublime を使おうとしたところ挫折したことの再チャレンジです。
Sublime Text から R を使うのには「Sublime REPL」を使う方法がよくネット上で紹介されています。例えば、こちらの2つです。
weathercook.hatenadiary.jp
www.kevjohnson.org
Sublime REPL から R を使う方法は2つあります。1つは、Sublime の画面を2つに割って、片方に R コンソール、もう片方にコードを書くようにして、書いたコードをRコンソールに渡すという流れです。↓な感じ。
もう1つは画面分割せずに Sublime 内で R を実行するだけ。どの方法も日本語の扱いにはまったく問題ありません。しかし、Sublime REPL は画面分割したとき動きがちょっと不安定で、書いたコードを隣のRコンソールに渡す時のショートカットキーがうまくいかないときがあります。画面分割しないと、エディタを使う意味ないし…。
R-Box を使う方法がある!
というわけで、違う方法を探しました。結果として、R-Box というプラグインを導入することで、RStudio よりもサクサク動く環境を作ることができました。Sublime のプラグイン導入方法や設定などは他ページをご覧ください。例えば↓。
http://keidrun.tumblr.com/post/73033053898/tipssublime-text-sublime-text
R-Box 導入後、Sublime のメニューで「 Preferences → Package Settings → R-Box →Settings - Users」で R-Box の設定ファイルを適切なものに書き換えます。R のプログラムがある場所を適切なものにするだけです。私の場合はこんな感じ。バックスラッシュは2つ必要です。
{ "R64": "C:\\Program Files\\R\\R-3.2.2\\bin\\x64\\Rgui.exe", "prog": "R64" }
Rを使うときは、Sublime の画面の右下にある「Plain Text」をクリックして「R-Box→R Extended」を選択。
適切なコードを書いて、RStudio と同じように「Ctrl+Enter」をすると、R コンソールが現れて、実行されます。こんな感じ。
日本語変数名・変数は問題ありません(いまのところ)。動作も機敏です。ちょっと不便なのは、read.delim("clipboard")
が使えないことです。手抜きせず read.csv()
とかを使えばOKです。めでたし、めでたし。しばらくはこれでやってみます。
でも、早く RStudio の不具合が解消して、日本語が普通に使えるようになればいいな。
【追記】
1.「軽くてサクサク」は起動のスピードのことを指しています。サクサクの表現は、さっと使いたいときにさっと使える私の気持ちです。わかりづらくてスミマセン。
2.r-wakalang で質問したときは、RStudio でほぼ問題なく日本語を使える方がいらっしゃいました。今回の問題は、私が使っているデータが原因かもしれません。