updateRadioButtons внутри функции - PullRequest
       2

updateRadioButtons внутри функции

2 голосов
/ 26 сентября 2019

У меня есть идентичный вызов, чтобы 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(),""), но я получил точно такую ​​же ошибку.

Любая помощь очень ценится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...