Shiny は R のパッケージの一つで、 このパッケージを使うと R を用いて対話的に操作する Web アプリケーションを作成することができます。Web 上のユーザーインタフェース部分を司る ui.R と、内部動作を司る server.R の二つの R 言語スクリプトで、サーバーサイドの style="font-size:small;"コンテンツを作成できることが大きな特徴です。
RStudio 上で Shiny による Web アプリケーションを作り始めたので、理解したことを備忘録としてまとめたことを不定期に紹介していきます。
自分が R を使って解析したい特定の分野について、Web アプリケーションを作成し、参考サイト [2] にある Shiny Server を Linux で稼働させて、作った Web アプリケーションを利用できるようにすることが目標です。しかし現時点では、その Web アプリケーションを作るだけの知識が伴っていないので、しばらくの間、簡単なサンプルで試行錯誤を続けて、判ったことをまとめていきたいと思います。
本記事で使用している動作環境は次の通りです。
- OS: Fedora 28 (x86_64)
- R: R-core-3.5.0-4.fc28.x86_64, R-core-devel-3.5.0-4.fc28.x86_64
- RStudio: rstudio-1.1.456-1.x86_64
Web App の作成 : Iris explorer ver. 2.1
前回の Shiny の記事 [3] で紹介した Iris explorer ver. 2 のレイアウトをベースにして、細かい改良を加えました。
実行例を以下に示しました。
このサンプルのコードを紹介します。
まず、ui.R を以下に示しました。
散布図 (Scatter) と 密度の等高線図 (Density2D) を統合しました。各タブ画面 (tabPanel) で、プロット部分より下の部分を column() 関数で左右 2 つに分け、従来の selectInput() 関数などの変数を選択する部分と、チェックボックスあるいはラジオボタンを用いたプロットオプション設定する部分にしました。
また、ヒストグラムで、縦軸を頻度 (Frequency) か密度 (Density) にするかを選択するラジオボタンでは、密度 (Density) を選ぶと、密度曲線 (density estimate) を表示するかどうかのチェックボックスが表示されるように conditionalPanel() 関数を使ってみました(下記コード)。
次に、server.R を以下に示しました。
こちらは、基本的にはプロットする処理が並んでいるだけで、それぞれ、input に紐づけられた変数の変化に応じて(再)描画する処理を実行するようになっているだけなのですが、オプションでプロットの方法を変えているため、例えば下記の散布図 (Scatter) のように、if 文を入れて、チェックボックスあるいはラジオボタンの選択状態によって表示が変化するようにしています。
まとめ
今回は、コードの説明が雑になってしまっているように思うので、時間のあるときに少しずつ手直しをしていきます。
Shiny を利用した R の Web アプリの作り方の初歩が大体判ったので、次はダッシュボード (shinydashboard) を利用した Web アプリ作りに挑戦したいと思っています。
参考サイト
にほんブログ村
0 件のコメント:
コメントを投稿