2016-12-27 21 views
0

shinyDashboardでダッシュボードを作成しました。このダッシュボードにはいくつかの操作情報が表示されます。私たちはIT組織の5つの分野で、環境内で何が起こっているかに応じて、「タッチ」または「ノータッチ」と宣言することができます。Shiny条件付きinfoBox出力

私が(単一列のデータフレーム)のように見えた、データを取得するために、単純なREST APIを使用しています:

Status 
eECC:Touch 
DOC:Touch 
CCC:Touch 
GEN:Touch 
IT:No Touch 

データフレームが.RDataファイルに書き出すとreactiveFileReaderを使用してロードされることを( )。それが終わったら、画面の上部にバナーを表示して環境を表示したり、変更が加えられたかどうかを確認するために、いくつかのinfoBox()をビルドします。

fluidRow(
    h4("Touch/No Touch", align="center"), 
    infoBox("ECC", "TOUCH", icon = icon("ok", lib = "glyphicon"), width = 2, color = "green"), 
    infoBox("DOC", "TOUCH", icon = icon("ok", lib = "glyphicon"), width = 2, color = "green"), 
    infoBox("CCC", "TOUCH", icon = icon("ok", lib = "glyphicon"), width = 2, color = "green"), 
    infoBox("GEN","TOUCH", icon = icon("ok", lib = "glyphicon"), width = 2, color = "green"), 
    infoBox("IT", "NO TOUCH", icon = icon("alert", lib = "glyphicon"), width = 2, color = "red") 
    ), 

だから、これは私が知っている、静的な例である:これは私のui.Rコードのクリップです。もともとコンセプトの証明として適所に置かれていました。私がしたいのは、touchNoTouchDF.RDataファイルからデータを読み込んで、RDataファイルの内容に基づいて色、アイコン、およびテキストを変更することから得られる入力を取得することです。

私の最初の試みはif elseステートメントを使用していたが、私が間違ってそれをやった、または光沢のある同類ということは表示されません。

fluidRow(
h4("Touch/No Touch", align="center"), 
if(touchNoTouchDF[1] == "ECC:Touch") { 
infoBox("ECC", "TOUCH", icon = icon("ok", lib = "glyphicon"), width = 2, color = "green")} else { infoBox("ECC", "TOUCH", icon = icon("ok", lib = "glyphicon"), width = 2, color = "green")}, 
... 
... 

動作するようには思えので、私の次のアイデアはしていなかったこと私のデータフレーム内のinfoBox()関数内の文字列を "ビルド"し、Rスクリプトのロジックを処理します。したがって、私のデータフレーム(現在は2列)は次のようになります。UIを構築する際に続いて

Status  UI 
ECC:Touch "ECC", "TOUCH", icon = icon("ok", lib = "glyphicon"), width... 

、単に以下を実行:

fluidRow(
    h4("Touch/No Touch", align="center"), 
    infoBox(touchNoTouchDF[1,2]), 
    infoBox(touchNoTouchDF[2,2]), 
    infoBox(touchNoTouchDF[3,2]), 
    infoBox(touchNoTouchDF[4,2]), 
    infoBox(touchNoTouchDF[5,2]) 
), 

まあ、ただのテキストを印刷していることinfoBox(大文字でも、私には奇妙に見えました...)。とにかく、これらのinfoBox()をRDataファイルから読み込んでいるものと動的にする方法を理解できないようです。任意のヒント?データフレームと行/列以外のinfoBox()関数にテキストを呼び出すときに使用しなければならない特定の関数がありますか?前もって感謝します!

答えて

1

光沢のあるアプリのサーバー部分にインフォボックスをレンダリングするとよいでしょう。以下の使用例:

## app.R ## 
library(shiny) 
library(shinydashboard) 

ui <- dashboardPage(
    dashboardHeader(), 
    dashboardSidebar(), 
    dashboardBody(
    fluidRow(infoBoxOutput('infoBox1'), valueBoxOutput('valueBox1')) 
) 
) 

server <- function(input, output) { 
    output$infoBox1 <- renderInfoBox({ 
    x <- runif(1, 0, 10) 
    color <- 'green' 
    if(x < 5) color <- 'red' 
    infoBox(value = x, title = 'Infobox example', color = color) 
    }) 
    output$valueBox1 <- renderValueBox({ 
    x <- runif(1, 0, 10) 
    color <- 'green' 
    if(x < 5) color <- 'red' 
    valueBox(value = x, subtitle = 'Valuebox example', color = color) 
    }) 
} 

shinyApp(ui, server) 
+0

これは完璧に機能しました。私は似たようなことをした他のアイテムをいくつか持っていましたが、シャイニーには新しいものですが、まだいくつかのものを選んで理解しようとしています。どうもありがとうございます! – azdatasci

関連する問題