函数内的updateRadioButtons

时间:2019-09-26 14:35:45

标签: r shiny

我有一个相同的调用,称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错误:缺少参数“输入”,没有默认值   75:ifelse   73:handle_turnover [C:/Users/pmelg/OneDrive/Desktop/fakeapp.R#4]   72:observeEventHandler [C:/Users/pmelg/OneDrive/Desktop/fakeapp.R#18]   1:runApp

我的研究表明,可能要使用模块了,所以我也尝试像callModule(handle_turnover(),"")这样调用handle_turnover函数,但是我得到了完全相同的错误。

非常感谢您的帮助

0 个答案:

没有答案