Обновление
Я понял это! изменить следующим образом:
conditionalPanel(condition = "input.fixed == 1",
Предыдущие ответы
Как правило, вам нужно было бы использовать input.fixed в условной панели, хотя, по-видимому, по какой-то причине это не работает для checkboxInput (может, кто-то другой может объяснить, почему?). Есть несколько альтернатив. Я бы предложил пакет inyjs .
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30),
checkboxInput("fixed", "Factorial parameters"),
hidden(selectInput("choice",
"Choose your fixed parameter",
c("alpha"= "Alpha", "beta"="Beta"),
selected = "alpha"))
)
,
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
observeEvent(input$fixed, {
toggle("choice")
}, ignoreInit = TRUE)
})
}
shinyApp(ui = ui, server = server)
Вместо переключения вы могли бы быть более явным с помощью оператора if ... else с использованием shinysj::show()
и shinyjs::hide()
, хотя я думаю, что это аккуратнее (просто обратите внимание на ignoreInit = TRUE
).
Как упоминалось выше, использование checkboxGroupInput, например, похоже, работает с conditionalPanels:
checkboxGroupInput("fixed", label = "", choices = "Factorial parameters"),
conditionalPanel(condition = "input.fixed == 'Factorial parameters'",
selectInput("choice",
"Choose your fixed parameter",
c("alpha"= "Alpha", "beta"="Beta"),
selected = "alpha"))
немного хакер, но делает свою работу.