我使用下面的代码从我的数据创建复选框。我想为从列表中选择的每个复选框创建滑块输入。例如,如果复选框有 4 个变量,如“天空”、“地球”、“水” ,“火”,如果我选择天空,它应该动态打开一个天空的滑块输入,如果我选择水,它应该再打开一个水的滑块输入。我尝试了条件面板,但我的复选框中有超过 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)
})
您希望将 sliderInputs 放入 UI 中的条件面板中并设置条件,以便在单击相关复选框时条件等于 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$variables 的内容是什么,你就可以对它们进行硬编码,否则你将不得不动态生成它们。
希望这些信息足以让您继续前进。