You need to enable JavaScript to run this app. 构建Shiny数据可视化应用触发tagAssert报错,请求排查代码问题
优惠活动
大模型
产品
解决方案
定价
更多

构建Shiny数据可视化应用触发tagAssert报错,请求排查代码问题

报错原因

你遇到的报错是shinydashboard的页面结构写错导致的:dashboardPage()函数需要传入三个平级的参数,分别是dashboardHeader()、dashboardSidebar()、dashboardBody(),你的代码把dashboardBody()错误嵌套进了dashboardSidebar()的内部,导致dashboardPage()缺少必填的body参数,直接抛出错误。

其他代码问题

除了结构错误外,你的代码还有几处逻辑问题需要修正:

  • 用到tabItem()组件时,必须在外层包裹tabItems()容器,否则标签页功能无法正常触发
  • 服务端逻辑中引用了input$file2、input$oncoslider两个输入控件,但UI部分完全没有定义这两个控件
  • aff响应式表达式中变量名写错:定义的变量是lamlgh.maf,后续调用时误写为laml.maf
修正后完整代码
library(shiny)
library(shinydashboard)
library(maftools)
ui <- dashboardPage(
  dashboardHeader(title = "Data Annotation"),
  dashboardSidebar(
    # 侧边栏补全代码中用到的控件定义,可根据需求调整参数
    sliderInput("oncoslider", "展示突变基因数量", min = 10, max = 50, value = 20),
    fileInput("file2", "选择临床注释文件(可选)", multiple = FALSE, accept = c(".tsv", ".csv"))
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName = "File Input",
              fileInput("file1", "选择MAF文件", multiple = FALSE, accept = c(".maf",".maf.gz"))),
      tabItem(tabName = "oncoplots",
              plotOutput("oncoplots"))
    )
  )
)
server <- function(input, output) {
  usrvar <- reactive({
    validate(need(input$file1$datapath != "", "请上传MAF文件。"))
    if (is.null(input$file2$datapath)){
      read.maf(input$file1$datapath)
    } else {
      read.maf(maf = input$file1$datapath , clinicalData = input$file2$datapath)
    }
  })
  aff <- reactive({
    lamlgh.maf = system.file('extdata', 'tcga_laml.maf.gz', package = 'maftools') 
    laml = read.maf(maf = lamlgh.maf)
    faf <- list(getFields(laml))
    return(faf)
  })
  output$oncoplots <- renderPlot({
    oncoplot(maf = usrvar() , top = input$oncoslider)
  })
}
shinyApp(ui = ui, server = server)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:54:00