У меня есть идентичный вызов, чтобы updateRadioButtons
появлялось полдюжины раз в большом блестящем приложении.Было бы неплохо превратить это в функцию, чтобы я мог сделать свой код намного чище, но я не могу понять, как поместить рабочую функцию, например updateRadioButtons, в подфункцию.
В частности, мне нуженКнопка действия, чтобы изменить значение переключателя, затем изменение значения переключателя вызывает другое реагирование.Этот пример скрипта работает так, как он должен:
library(shiny)
ui <- fluidPage(
actionButton("turnover","Turnover")
,radioButtons("team","Possession"
,choices = list(Home = "Home", Away = "Away"))
,textOutput("outText")
)
server <- function(input, output, session) {
observeEvent(input$turnover,{
updateRadioButtons(session,"team"
,selected = ifelse(input$team == "Home"
,"Away","Home"))
})
output$outText = renderText({paste0("Current possessing team is: ",input$team)})
}
shinyApp(ui, server)
Но если я переместу updateRadioButtons в подфункцию, он больше не будет работать:
library(shiny)
handle_turnover = function(input,output,session){
updateRadioButtons(session,"team"
,selected = ifelse(input$team == "Home"
,"Away","Home"))
}
ui <- fluidPage(
actionButton("turnover","Turnover")
,radioButtons("team","Possession"
,choices = list(Home = "Home", Away = "Away"))
,textOutput("outText")
)
server <- function(input, output, session) {
observeEvent(input$turnover,{
handle_turnover()
})
output$outText = renderText({paste0("Current possessing team is: ",input$team)})
}
shinyApp(ui, server)
Когда я нажимаю Turnover
Кнопка Я получаю следующую ошибку
Предупреждение: ошибка в ifelse: отсутствует аргумент «input», без значения по умолчанию 75: ifelse 73: handle_turnover [C: / Users / pmelg / OneDrive / Desktop / fakeapp.R # 4] 72: наблюдайте за событиями [C: /Users/pmelg/OneDrive/Desktop/fakeapp.R#18] 1: runApp
Мое исследование показало, что модули могут быть подходящими,поэтому я также попытался вызвать функцию handle_turnover следующим образом callModule(handle_turnover(),"")
, но я получил точно такую же ошибку.
Любая помощь очень ценится