You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()
})

关键修正点

  1. 补全filter后的管道符,确保代码逻辑连贯
  2. 使用%in%替代=来匹配多个年份值
  3. 在group_by后添加summarize计算批准总数,同时处理缺失值
  4. 调用响应式对象时添加(),获取实时计算的数据
  5. 调整ggplot的映射参数为聚合后的列名,确保绘图数据有效

内容的提问来源于stack exchange,提问作者Maria Mohyuddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:42:26