0

sidebarPanel の上部で「Alfa/Beta」を選択し、それぞれの場合にフィールドのリストから選択することを条件とする UI を備えた光沢のある Web ページがあります。

ui.Rファイル内の selectInputs の値のリストをハードコードした場合に機能するようにui.Rなりましたが、今では、selectInputs とui.Rフェッチからのコンテンツを組み合わせた機能するバージョンが必要です。のデータベースからのデータserver.R

server.R私の問題は、可能な値のリストを db selectsから selectInputs inui.Rに渡し、選択を に戻してserver.Rプロットを生成する方法がわからないことです。チュートリアルで読んだ例には、この高レベルの conditionalPanels が含まれていないため、混乱しています。

これがどのように機能すると想像するかをスケッチしましたが、方法がわからないいくつかの方法を残しました(以下を参照)。

これらの選択を前後に渡す方法はありますか?

ui.R

## Old hard-coded values
# alfaFieldA = c("One","Ttwo")
# ...

shinyUI(pageWithSidebar(
  headerPanel("Page Dev"),
  sidebarPanel(
      selectInput("option","Alfa/Beta",c("Alfa","Beta")),
      conditionalPanel(condition="input.option=='Alfa'",
                       selectInput("SOMEHOW.alfaFieldA","Alfa FieldA",choices=alfaFieldA,selected=alfaFieldA,multiple=T)
      ),
      conditionalPanel(condition="input.option=='Beta'",
                       selectInput("SOMEHOW.betaFieldA" ,"Beta FieldA" ,choices=betaFieldA,selected=betaFieldA,multiple=T)
      ),
      wellPanel(
      p(strong("Selection from lists from either Alfa or Beta:")),
      conditionalPanel(condition="input.option=='Alfa'",
                       selectInput("SOMEHOW.alfaFieldB","Alfa FieldB",choices=alfaFieldB,selected=alfaFieldB,multiple=T)
      ),
      conditionalPanel(condition="input.option=='Alfa'",
                       selectInput("SOMEHOW.alfaFieldC","Alfa FieldC",choices=alfaFieldC,selected=alfaFieldC,multiple=T)
      ),
      conditionalPanel(condition="input.option=='Beta'",
                       selectInput("SOMEHOW.betaFieldB" ,"Beta FieldB" ,choices=betaFieldB,selected=betaFieldB,multiple=T)
      ),
      conditionalPanel(condition="input.option=='Beta'",
                       selectInput("SOMEHOW.betaFieldC" ,"Beta FieldC" ,choices=betaFieldC,selected=betaFieldC,multiple=T)
      )
    )
   ),

  # display the tabset depending on choosing Alfa or Beta above.
  mainPanel(
    conditionalPanel(condition="input.option=='Alfa'",
                     tabsetPanel(tabPanel("A1"),tabPanel("A2"))),
    conditionalPanel(condition="input.option=='Beta'",
                     tabsetPanel(tabPanel("B1"),tabPanel("B2"),tabPanel("B3")))
  )
))

サーバー.R

library(RMySQL)
shinyServer(function(input, output, clientData) {

  # Gather data
  dbcon = dbConnect(MySQL(),user="userRO",password="xxxxx",host="my-host-01",port=5000,dbname="mydb")
  fa      = dbSendQuery(dbcon, "select a, b, c from mytableA")
  fa_data = fetch(fa, n=-1)

  fa_data = fa_data[nchar(fa_data$a)!=0,]
  # make 'mytableA.a' list visible to conditionalPanel selectInput alfaFieldA

  fb      = dbSendQuery(dbcon, "select a, b, c from mytableB")
  fb_data = fetch(fb, n=-1)
  fb_data = fb_data[nchar(fb_data$a)!=0,]
  dbret   = dbDisconnect(dbcon)
  # make 'mytableB.a' list visible to conditionalPanel selectInput betaFieldA SOMEHOW

  output$A1 <- renderGvis({
  # manipulate fa_data for selected FieldA and FieldB values SOMEHOW and plot something
  })
  output$B1 <- renderGvis({
  # manipulate fb_data for selected FieldA, FieldB and FieldC values SOMEHOW and plot something
  })
  # ...
})
4

0 に答える 0