R语言 基于复选框输入的多个滑块输入

rqcrx0a6  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(116)

我已经使用下面的代码从我的数据创建复选框。我想为我从列表中选择的每个复选框创建滑块输入。例如,如果复选框有4个变量,如“天空”,“地球”,“水”,“火”,如果我选择天空,它应该动态打开一个天空滑块输入,如果我选择水,它应该打开一个水滑块输入。我尝试了conditionalPanel,但是我的复选框中有50多个变量,所以我不能为所有的50个变量写条件。在shiny中有任何通用的方法吗?
服务器

output$choosedigital=renderUI({

if(is.null(bk$variables))
   return()

checkboxGroupInput("choosemedia", "Choose digital", 
                    choices  = bk$variables,
                    selected = bk$variables)
})

  output$test <- renderUI({
  LL <- list(rep(0,length(input$choosedigital)))     
  for(i in 0:(length(input$choosedigital))) {
   LL[i] <- list(sliderInput(inputId = paste(input$choosedigital,i)
                             , label = paste(input$choosedigital,i), 
  min=0,max=25,value = 5))
  }       
  return(LL)                      
  })

字符串

jgzswidk

jgzswidk1#

您希望将sliderInputs放在UI中的conditionalPanel中,并设置条件,以便在单击相关复选框时条件等于TRUE。
例如

library(shiny)
myData = c("One", "Two", "Three")

ui <- fluidPage(
  
  checkboxGroupInput("choosemedia", "Choose digital", 
                     choices  = myData,
                     selected = myData),
  textOutput("myText"),
  conditionalPanel(condition = "input.choosemedia.includes('One')", 
                   sliderInput("sliderOne", "Choose your value", min=0, max=100, value=50)
  ),
  conditionalPanel(condition = "input.choosemedia.includes('Two')",
                   sliderInput("sliderTwo", "Choose your other value", min=0, max=50, value=25)
  )
    )

# Define server logic 
server <- function(input, output) {
  output$myText <- renderText({input$choosemedia})
   
}
# Run the application 
shinyApp(ui = ui, server = server)

字符串
如果你知道bk$变量的内容是什么,你可以硬编码它们,否则你将不得不动态生成这些变量。
希望这是足够的信息让你去。

相关问题