R Shiny报错:`server` must be a function,求问题排查思路
Shiny应用报错:'server' must be a function 解决思路
问题原因
调用randomApp()时触发的Error: 'server' must be a function错误,本质是**runApp()的参数传递不符合要求**。
runApp()并不接受直接传入ui和server两个独立参数,它的合法参数形式是:
- 传入一个由
shinyApp(ui, server)生成的Shiny应用对象 - 传入包含
ui和server元素的列表
你的代码中直接将ui和server作为两个参数传入,导致R无法正确识别server参数的类型,从而抛出错误。
修正方案
将runApp(ui, server)替换为以下任意一种写法即可:
方式1:使用shinyApp()创建应用对象
runApp(shinyApp(ui, server))
方式2:传入包含ui和server的列表
runApp(list(ui = ui, server = server))
完整修正代码
library(shiny) randomUI <- function(id) { tagList( textOutput(NS(id, "val")), actionButton(NS(id, "go"), "Go!") ) } randomServer <- function(id) { moduleServer(id, function(input, output, session) { rand <- eventReactive(input$go, sample(100, 1)) output$val <- renderText(rand()) }) } randomApp <- function(){ ui <- fluidPage( randomUI("random1"), randomUI("random2"), randomUI("random3") ) server <- function(input, output, session) { randomServer("random1") randomServer("random2") randomServer("random3") } # 修正后的调用 runApp(shinyApp(ui, server)) } randomApp()
内容的提问来源于stack exchange,提问作者Ege Can
相关产品推荐
相关产品推荐

