R で Shiny を使用してインタラクティブな Web アプリを構築する方法

R De Shiny Wo Shi Yongshiteintarakutibuna Web Apuriwo Gou Zhusuru Fang Fa



RStudio のバンドルである R Shiny フレームワークのおかげで、R を使用した動的 Web アプリの作成は比較的簡単です。 Shiny の利点は、R コードを Web 上に公開できるようになり、より幅広いユーザーがアクセスしやすくなることです。 R Shiny を使用すると、ユーザーがデータ セットを分析できる非常に強力なデータ レポートとビジュアルを作成できます。 Shiny コンポーネントとともに、HTML 要素を使用してプログラムのコンテンツを設計できます。今日の記事では、R の Shiny パッケージを使用してインタラクティブな Web アプリケーションを構築するプロセスを説明します。このために、「RStudio」がすでにインストールされていることを確認してください。

RStudio に Shiny パッケージをインストールする

RStudio 内でインタラクティブな Web アプリケーションの作成に進む前に、「Shiny」パッケージをすでにインストールしておく必要があります。このためには、RStudio の「ツール」メニューを展開し、続いて「パッケージのインストール」オプションを展開する必要があります。開いたウィンドウ内で、インストールしたいパッケージ、つまり「shiny」を指定し、「インストール」ボタンをタップする必要があります。 RStudio は、RStudio コンソールに Shiny パッケージをインストールします。







R で Shiny を始めましょう

R で Shiny を使い始めるには、RStudio の最初にある「ファイル」メニューを使用して新しい R ファイルを作成する必要があります。それを展開し、「新しいファイル」オプションを使用し、続いて「R スクリプト」オプションを使用します。 「無題」スクリプト ファイルが RStudio で開きます。任意の場所にある「R」ファイルに名前を変更します。



ここで、R で対話型アプリケーションを構築するために必要なパッケージをロードします。つまり、R の「ライブラリ」機能を使用します。「if」ステートメントは、以前にインストールされていないパッケージをインストールするために使用されます。 Shiny パッケージは、いくつかのグラフィカルな視覚化とともに、Web アプリケーションの対話型インターフェイスを構築するために使用されます。 「dplyr」パッケージは主に、いくつかの便利な機能を利用して R でのデータ操作を容易にするために使用されます。



最後に、「ggplot2」パッケージは、カスタマイズされた強力なグラフを作成することにより、優れたデータ視覚化ソースとしてロードされます。





もし ( requireNamespace ( 「光沢のある」 、 静かに = 真実 {

インストール。 パッケージ ( 「光沢のある」

}

もし ( requireNamespace ( 「dplyr」 、 静かに = 真実 {

インストール。 パッケージ ( 「dplyr」

}

もし ( requireNamespace ( 「ggplot2」 、 静かに = 真実 {

インストール。 パッケージ ( 「ggplot2」

}

図書館 ( 光沢のある

図書館 ( dplyr

図書館 ( ggplot2

インタラクティブな試験採点システムを構築する

このチュートリアルでは、学生が 100 点満点で得られる点数によって達成した成績を取得できる「試験採点システム」を作成します。提供されるスクリプトは、デザインと外観を指定する Shiny アプリの「ui」コンポーネントです。プログラム。プログラムは、ブラウザ ウィンドウに合わせて調整できる調整可能なデザインである FluidPage を生成します。

「titlePanel」と「sidebarLayout」は「fluidPage」の子孫です。 「titlePanel」に表示されるのは、プログラムの「Exam Grading System」のタイトルだけです。 「sidebarPanel」と「mainPanel」は、「sidebarLayout」がアプリケーションを分割するために使用する 2 つのセクションです。 「sidebarPanel」には、「score」という名前の「textAreaInput」と「calculate」という名前の「actionButton」という入力のペアが含まれています。



「textAreaInput」を使用して、生徒ごとに 1 行に 1 つのスコアを入力できます。 「actionButton」を使用して成績評価を開始できます。 「mainPanel」には、「Result」という名前の「tableOutput」と「ResultGraph」という名前の「plotOutput」という 1 組の出力が存在します。 「tableOutput」と「plotOutput」はどちらも、計算結果をグラフの形式で表示します。

ウイ <- 流体ページ (

タイトルパネル ( 「試験成績評価システム」
サイドバーレイアウト (
サイドバーパネル (
テキストエリア入力 ( 'スコア' 「生徒のスコアを入力してください (1 行に 1 つ):」 「」
アクションボタン ( 「計算する」 「成績を計算してみよう」

メインパネル (
テーブル出力 ( '結果'
プロット出力 ( 「結果グラフ」

サーバー メソッドは、アプリケーションのサーバー側ロジックを確立します。生徒の採点は、最初は「data」という名前のリアクティブ変数に保存されます。このため、「計算」ボタンは R の「observeEvent」メソッドによって監視されます。ボタンがトリガーされた後、コードは最初にテキスト フィールド入力に入力された値を数値に変換します。

各スコアの後に「\n」を使用して改行し、次の行に新しいスコアを入力します。このメソッドは、見つかったスコアをすべて「data」変数に配置します。ユーザーがスコアを入力しなかった場合、メソッドはエラーを含むメッセージを表示します。

サーバ <- 関数 ( 入出力 ) {

データ <- リアクティブヴァル ( ヌル )

イベントを観察する ( 入力$計算、 {

スコア <- として。 数値 ( リストから外す ( strsplit ( 入力$スコア、 \n ) ) )

もし ( 長さ ( スコア ) > 0 ) {

データ ( スコア )

} それ以外 {

データ ( ヌル )

ショーモーダル ( モーダルダイアログ (

タイトル = 'エラー'

「エラー: 値を追加してください!」

簡単閉じる = 真実

) )

}

} )

「output$Result」と「output$ResultGraph」の 2 つの出力は、生徒の成績と達成した成績を表示するために指定されています。 renderTable() 動的メソッドは、「output$Result」というラベルが付けられた生徒のテストの点数と成績のデータ テーブルを生成します。 renderPlot() メソッドは同様にリアクティブで、生徒の成績の棒グラフを生成し、同様に「output$ResultGraph」出力に保存します。

したがって、入力データが更新されるたびにそれらが確認されます。 if (!is.null(data())) 式は、受信したデータが null かどうかを判断します。 「if」ステートメントのスクリプトは、空でない場合に実行されます。生徒のスコアのベクトルが入力「データ」を構成します。 case_when() メソッドを使用して、各生徒にスコアに基づいて成績が与えられます。学生の成績とテストの点数を含むデータ フレームは、data.frame() メソッドを使用して作成されます。 「Student」、「Score」、および「Grade」の列がデータ フレームに追加されます。成績分布は、table() メソッドを使用して「GradeCount」というテーブルにコンパイルされます。

出力$結果 <- レンダリングテーブル ( {

もし ( は。 ヌル ( データ ( ) ) ) {

成績 <- case_when (

データ ( ) > 80 「あ」

データ ( ) > 60 「B」

データ ( ) > 40 「C」

データ ( ) > 30 「D」

真実 「ふ」

)

データ。 フレーム ( 学生 = 1 : 長さ ( データ ( ) ) 、 スコア = データ ( ) 、 学年 = 成績 )

}

} )

出力$結果グラフ <- レンダリングプロット ( {

もし ( は。 ヌル ( データ ( ) ) ) {

成績 <- case_when (

データ ( ) > 80 「あ」

データ ( ) > 60 「B」

データ ( ) > 40 「C」

データ ( ) > 30 「D」

真実 「ふ」

)

成績数 <- テーブル ( 成績 )

棒グラフは「ggplot2」ライブラリを使用して作成されます。 Count (各成績を取得した生徒の総数) と Grade 列が DataFrame に作成されます。 「x 軸」に「Grade」データ、「y 軸」に「Count」データを持つ棒グラフは、geom_bar() メソッドを使用して作成されます。 stat = “identity” オプションは、いかなる変換も行わずに実際のデータを利用するように ggplot2 に指示します。タイトル、x 軸ラベル、y 軸ラベルはすべて「labs」メソッドを介して追加されます。バーの色は、scale_fill_manual() メソッドを使用して割り当てられます。不要なグリッド線とオーバーレイ コンポーネントは、theme_minimal() メソッドを使用して削除されます。 ShinyApp(ui,server) メソッドはアプリを構築します。

ggプロット ( データ = データ。 フレーム ( 学年 = 名前 ( 成績数 ) 、 カウント = として。 数値 ( 成績数 ) )
えす ( バツ = グレード、および = 数える、埋める = 学年 ) ) +
ジオムバー ( ステータス = '身元' ) +
研究室 ( タイトル = 「成績分布」
バツ = '学年'
そして = 'カウント' ) +
スケールフィルマニュアル ( 価値観 = c ( 「あ」 = '緑' 「B」 = '紫' 「C」 = 'ピンク'
「D」 = 'オレンジ' 「ふ」 = '赤' ) ) +
テーマ_ミニマル ( )
}
} )
}
光沢のあるアプリ ( UI、サーバー )

このコードを実行すると、対話型インターフェイスが表示され、マークを追加して [成績を計算しましょう] ボタンをクリックします。

生徒の得点と成績を含む表が表示され、その後に成績分布を示す棒グラフが色分けして表示されます。

結論

このガイドでは、RStudio を介して R 言語で Shiny パッケージを使用することの重要性について説明します。説明を補足すると、「Shiny」パッケージを利用して、R コードで学生の採点システム用の対話型 Web アプリケーションを構築しました。