本記事は、Shiny Advent Calendar 2017の17日目の記事です。
今回はShinyノック第17弾ということで、output関数を一挙に紹介していきたいと思います。
特にShinyを始めたばかりの方に、辞書的に活用して頂ければ幸いでございます。
そもそもShinyって何?という方はこちらの記事を先に読んでみてください。
www.randpy.tokyo
Output関数の紹介
まず、公式チュートリアルを参考に、output関数の一覧をまとめました。ui.Rで使う関数 | 出力形式 | server.Rで使う関数例 |
dataTableOutput | データテーブル | renderDataTabel |
htmlOutput | HTML | renderUI |
imageOutput | 画像 | renderImage |
plotOutput | グラフ | renderPlot |
tableOutput | テーブル | renderTable |
textOutput | テキスト | renderText,Print |
uiOutput | HTML | renderUI |
verbatimTextOutput | テキスト | renderText,Print |
上の表を見て頂ければ、大体何を表示するものかは分かるかと思いますが、いくつか補足しておきます。
- textOutputとverbatimTextOutputの違いは、後者はエスケープ文字列('\n'で改行など)を認識したテキストアウトプットを出すことが出来ます。
- tableOutputとdataTableOutputの違いは、後者はUI上でテーブルを操作(昇順、降順、検索...)が出来ます。
※htmlOutputとuiOutputの違いが、調べても分からず、誰か分かる方がいたら教えてください。。。
上の表を元に、UI上で何を表示したいのかによって、関数を使い分けましょう。
この他にも、関数はたくさんありますが、上記で記載したものだけでもアプリを作るには十分です。
それでは、実際にそれぞれの関数のアウトプット画面を見ていきましょう。
なお、今回はソースコードについては一切触れないので、コードの中身が見たい方はGithubを参照してください。
github.com
実践編
まずは完成図がこちらです。
画面上部の各タブによって、表示されるアウトプットが変わります。
なお、用いるデータはirisを使っています。
全ての画面をお見せするのはちょっと冗長なので、今回は先程触れたtableOutputとdataTableoutput、そしてtextOutputとverbatimTextOutputの出力結果の違いをお見せしたいと思います。
tableOutputとdataTableoutput
tableOutputの結果
dataTableOutputの結果
テーブルのアウトプット形式を比べると、tableOutputは縦にずらーとデータが並んでいます。
一方dataTableOutputは、10行までしか表示しないような設計になっていたり、またカラムの部分に注目すると昇順・降順ソートができるようになっています。
右上に検索ボックスもありますね。dataTableOutputのほうが見やすさもあり、かつ汎用性がありそうです。
textOutputとverbatimTextOutput
次にテキストの出力結果を見てみましょう。textOutputの結果
verbatimTextOutputの結果
こちらテキストの出力結果ですが、両方の文字列中に、エスケープ文字'\n'を入れています。
verbatimTextOutputの方ではエスケープ文字をしっかりと認識して、改行してることがわかります。またタグ内にテキストが出力されるようになっているのも特徴ですかね。
終わりに
今回は原点に戻って、基本となるアウトプット関数について一通りおさらいをしてみました。こうやって書き出してみると、まだまだ理解できてないことが多いなと感じました。
今後もうまく使い分けられるよう勉強してかないといけないなと…頑張ります。
是非、皆さんも色々なアウトプット形式を使い分けて面白いアプリを作ってみてください。
それでは良いShinyライフを!!