我有一个相同的调用,称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函数,但是我得到了完全相同的错误。
非常感谢您的帮助