Ответ 1
Ваше приложение настроено правильно, но проблема связана с сообщением о том, что новое значение для opbAppendRemoveMonthlyOption
"ничего не выбрано" теряется. Например, если вы измените параметр по умолчанию selected
на "Продолжить", тогда он получает reset правильно каждый раз при изменении ползунка.
Обычно вы также можете использовать соответствующую функцию обновления в реактивном выражении, чтобы изменить значение ввода следующим образом:
observeEvent({input$num}, {
updateRadioGroupButtons(session, "opbAppendRemoveMonthlyOption",
selected = character(0))
})
Однако, как и при создании ввода, это сообщение игнорируется при попытке вернуть значение в невыбранное состояние, но работает, если установить его в один из параметров. Обратите внимание, что использование невыделенного состояния не рекомендуется в документации Shiny (?radioButtons
), поэтому может быть не полностью поддержано.
Если вам нужно представить состояние "None selected", возможно, для переключателей по умолчанию не будет выбранных опций, используя выбранный символ = (0). Однако это не рекомендуется, так как это дает пользователю возможность вернуться в это состояние после того, как они сделали выбор. Вместо этого подумайте, что первый из ваших вариантов будет c ( "None selected" = "").
Вы можете обойти это с помощью немного JavaScript, чтобы значение input
было reset при каждом щелчке ползунка.
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
tags$div(
sliderInput(inputId = "num",
label = "Choose a number",
value = 25, min = 1, max = 100),
onchange = "Shiny.onInputChange('opbAppendRemoveMonthlyOption', '')"
),
uiOutput("uploadorSelect"),
textOutput("RadioButtonValue")
)
server <- function(input, output) {
output$uploadorSelect <- renderUI({
x<-input$num
if( x > 30 ){
# render grouped radio buttons
radioGroupButtons(inputId = "opbAppendRemoveMonthlyOption",choices =c("Append","Continue"), status = "success",
direction = "horizontal",justified = F,checkIcon = list(yes=icon("ok",lib="glyphicon")),selected = character(0))
}else{
# render upload button
fileInput(inputId="btnUploadMonthlyFile",label = "Upload Monthly Data file")
}
})
output$RadioButtonValue<-renderText({
x<-(input$opbAppendRemoveMonthlyOption)
return(x)
})
}
shinyApp(ui = ui, server = server)
Дополнительная информация Shiny ↔ JavaScript-сообщения от RStudio.com