R Shiny Dashboard报错:object 'output' not found 求助
解决Shiny Dashboard中
output对象未找到的错误 错误信息
退出自第30-65行[unnamed-chunk-3] (Dashboard.qmd)
错误:
! object 'output' not found
执行终止
问题分析
你的代码存在多处语法和逻辑问题,直接导致output对象无法被正确识别:
- 管道操作断裂:
filter语句后缺少%>%,后续代码脱离了reactive表达式上下文,引发语法错误 - Reactive对象调用错误:在
renderTable和renderPlot中直接使用approval,响应式对象必须通过approval()调用才能获取数据 - 分组后未聚合:
group_by之后没有对应聚合操作,ggplot无法直接处理未聚合的分组数据 - 年份匹配语法错误:
year=c(...)应改为year %in% c(...),才能正确筛选多个年份
修正后的代码
#| context: server #| include: false approval <- reactive({ asylum_decisions %>% mutate(approved = dec_recognized + dec_other) %>% filter(year %in% c("2013","2014","2015","2016","2017","2018","2019","2020","2021","2022")) %>% left_join(countries_2, join_by(coo_name)) %>% group_by(year, unhcr_region = input$unhcr_region) %>% summarize(total_approved = sum(approved, na.rm = TRUE)) %>% ungroup() }) output$data <- renderTable({ approval() }) output$plot <- renderPlot({ ggplot(approval(), aes(x = year, y = total_approved, fill = total_approved)) + geom_col() + theme_unhcr() })
关键修正点
- 补全
filter后的管道符,确保代码逻辑连贯 - 使用
%in%替代=来匹配多个年份值 - 在
group_by后添加summarize计算批准总数,同时处理缺失值 - 调用响应式对象时添加
(),获取实时计算的数据 - 调整ggplot的映射参数为聚合后的列名,确保绘图数据有效
内容的提问来源于stack exchange,提问作者Maria Mohyuddin
相关产品推荐
相关产品推荐

