[英]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.