簡體   English   中英

光澤儀表板中的多個條件

[英]Multiple Condition in Shiny Dashboard

下面是一個示例,但是在當前情況下,我有很多條件要傳遞,並且我不想使用if語句。 如果我能完成工作,有沒有其他方法可以使用。


library(shiny)

ui = fluidPage(
  selectInput('p_id','ID:', c(111,222,333)),
  uiOutput('uiID')
)

server = function(input, output, session) {

  maxdays <- reactive({
    if(input$p_id %in% c(111)){
      x = 1
    }else{
      if(input$p_id %in% c(222)){
        x = 2
      }else
        x = 3 
    }
    return(x)
  })


  output$uiID <- renderUI({
    selectInput('days','Days:', choices=seq(1,maxdays()))
  })


}

runApp(shinyApp(ui = ui, server = server))

假定maxdays基本返回了selectInput的選擇的位置,則可以執行以下操作:

library(shiny)

my_choices <- c(111, 222, 333)

ui <- fluidPage(
  selectInput('p_id', 'ID:', my_choices),
  uiOutput('uiID')
)

server <- function(input, output, session) {
  maxdays <- reactive(which(my_choices %in% input$p_id))

  output$uiID <- renderUI({
    selectInput('days', 'Days:', choices = seq(1,maxdays()))
  })
}

shinyApp(ui, server)

最好不要一直使用renderUI一直重新創建對象,相反,我們可以簡單地更新小部件:

library(shiny)

data <- c(111,222,333)
ui <- fluidPage(
  selectInput('p_id','ID:', data),
  selectInput('days','Days:', choices = NULL)
)

server = function(input, output, session) {

  observeEvent(input$p_id,{
    mseq <- seq(1,which(data %in% input$p_id))
    updateSelectInput(session,"days","Days:",choices = mseq)
  })

}
runApp(shinyApp(ui = ui, server = server))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM