Rでデータの分布を確認するとき、dfSummary関数はとても便利です。
私の場合は、データを読み込んだ最初の時点、分析で使う変数を作成後、分析対象のケースや変数だけを取り出した後などことあるごとにdfSummary関数を使ってデータの様子を確認しています。
dfSummary関数を使った記述統計の確認方法は下記の記事をご覧ください。
ただ、人間というのは欲深いもので、使っているうちに、こんな不満が出てきました。
出力画面ちっちゃい。
変数が10個程度であれば、ちょっとスクロールすればよいので特に気にならないのですが、素データ自体にたくさんの変数がある場合、出力結果が縦に長く伸びすぎて、Rstudioの分割画面の中だけだと、少し見づらいです。
そんなわけで、SPSSのように別ウィンドウで見ることができれば結果が見やすくなるのでは?と思い、挑戦してみたところうまくいったので忘れないうちにメモを残しておきたいと思います。
(今回紹介する方法は、今のところは、ごく限られた出力結果にしか対応できてません。さらに良い方法を見つけたら都度アップデートしていきたいと思います)
Rの出力結果をブラウザで表示する
view(dfSummary(dataset))を実行したとき、コンソール画面を見るとわかるのですが、
Output file written:…. / ファイル.html
と記載されています。
これは、viewerに表示されている出力結果を表した一時ファイルのファイルパスを示しています。
(ファイルの拡張子を見てわかるように、viewerに出力されているデータはhtmlファイルだと思われます)
Output file written: C:\...出力結果のファイルパス..\出力結果のファイル.html
htmlファイルで作成されているということは、ブラウザ(Google ChromeとかMicrosoft edgeとか)にリンクを渡せば、ブラウザ上で表示することができそうです。
実際に、”Output file written:” 以降のC:から始まるURLをコピーして、ブラウザ上で貼れば、以下のようにブラウザ上で閲覧できるようになります。
このようにブラウザを活用することで、Rstudio内の区分化されたviewerを使うことなく全体を一気に見ることができます。
dfSummaryはview関数を使うと、htmlファイルを出力してくれるのでありがたいです。
htmlファイルで出力される結果であれば、上記の方法でブラウザ上に出力することができそうです。
しかし、スクリプトを走らせるたびに、URLをコピぺしてブラウザ上に貼り付けるのは少々手間になります。
そこで、スクリプトを走らせたら、自動的にブラウザが立ち上がるようにしてみたいと思います。
自動でブラウザに出力する
Rからブラウザを立ち上げる方法として、browseURL関数があります。
browseURL関数は引数として、
- 表示したいhtmlファイルのURL
- 使用するブラウザアプリのURL
を指定してあげることで、表示したいファイルを指定したブラウザで表示することができます。
このうち、表示したい1つ目のhtmlファイルは、先ほどのview(dfSummary(iris))をそのまま変数として代入すればOKです。
2つ目の使用するブラウザアプリのURLは、表示させたいブラウザアプリのプロパティにある「リンク先」が該当します(画像参照)。
これらを使用して、以下のようにスクリプトを入力します。
library(summarytools)
#変数chromeに、GoogleChromeのリンクを貼る
chrome<-"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
#view(dfSummary())の出力のパスを変数summary_irisに入れる。
summary_iris<- view(dfSummary(iris))
browseURL(summary_iris,browser=chrome)
ポイントはブラウザの実行ファイル(上記であればGoogle chrome)をあらかじめ変数に代入しておくことですが、注意点として、ファイルパスが”¥”や”\”だとエラーが出てしまうので、ファイルパスの区切りは”/”に書き直す必要があります。
ブラウザのパスを、Rスクリプトの序盤あたりで宣言してあげておくと、何度も使えて便利です
上記のスクリプトを走らせると、自動的にブラウザ上に出力結果が表示されるはずです。
まとめ
今回の記事では、自動的にブラウザを立ち上げて、Rの出力結果をそこに表示する方法を紹介しました。
htmlファイルの表示に特化したものであるといえるため、適用できる範囲は残念ながら限られているかもしれませんが、より汎用的な方法が見つかれば、紹介したいと思います。