Согласен с @Dean Attali.Но если это абсолютно необходимо (не рекомендуется),
library(shiny)
ui <- fluidPage(
radioButtons("btn","Click Me",choices = c("Choice 1","Choice s"),selected = character(0)),
actionButton("clickMe","Click Me to Reset")
)
server <- function(input, output, session) {
observeEvent(input$clickMe,{
updateRadioButtons(session,"btn",choices = c("Choice 1","Choice s"),selected = character(0))
})
}
shinyApp(ui, server)
Рассмотреть возможность использования флажка gorup в качестве альтернативы?
Изменить
library(shiny)
ui <- fluidPage(
radioButtons("btn","Click Me",choices = c("Choice 1","Choice s"),selected = character(0)),
actionButton("clickMe","Click Me to Reset"),
actionButton("showValue", "Show value")
)
server <- function(input, output, session) {
selected = reactiveVal(NULL)
observeEvent(input$clickMe,{
updateRadioButtons(session,"btn",choices = c("Choice 1","Choice s"),selected = character(0))
selected(NULL)
})
observeEvent(input$btn,{
selected(input$btn)
})
observeEvent(input$showValue, {
print(selected())
})
}
shinyApp(ui, server)
Вы можете использовать реактивval как прокси.Но мы попадаем в настоящую хакерскую территорию.
Редактировать 2 Пользовательское решение javascript
Вот пользовательское решение javascript, обсуждаемое в комментариях.В этом решении, если пользователь дважды щелкает переключатель, он становится невыбранным.Вы можете дважды проверить значение через кнопку.Обратите внимание, что вы не будете ссылаться на input$btn
для значения кнопки.Пользовательское значение создается с помощью input$radio_click
.
library(shiny)
ui <- fluidPage(
tags$script(HTML("
window.onload = function(){
var btns = document.getElementById('btn');
btns_radio = btns.getElementsByTagName('input');
for(var i = 0; i < btns_radio.length; i++){
btns_radio[i].addEventListener('click',function(x){
Shiny.onInputChange('radio_click', this.value)
});
btns_radio[i].addEventListener('dblclick',function(x){
if(this.checked){
this.checked = false;
Shiny.onInputChange('radio_click', null)
}
})
}
}
")),
radioButtons("btn","Click Me",choices = c("Choice 1","Choice s"),selected = character(0)),
actionButton("showValue", "Show value")
)
server <- function(input, output, session) {
observeEvent(input$showValue, {
print(input$radio_click)
})
}
shinyApp(ui, server)