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

SLE疾病评分系统Shiny应用运行故障排查求助

SLE疾病评分Shiny应用问题修复

代码错误点

  • Shiny的input属于只读响应式对象,禁止直接对input$xxx赋值
  • checkboxGroupInput的选中结果统一存储在input$variable字符向量中,不会生成input$neu、input$gin这类独立变量
  • 输出对象output$data需要绑定renderText()渲染函数,不可直接绑定reactive()
  • 逻辑判断语法错误:total > 2 && < 5不符合R语法规范,需补全为total > 2 && total < 5
  • 存在逻辑冗余:mio、fev被重复累加,mio分值被重复赋值覆盖,还遗漏了muc(皮肤黏膜病变)的分值定义
  • 缺失shiny包加载语句,未加载包直接运行会报错

修复后完整可运行代码

library(shiny)
ui <- fluidPage(
  checkboxGroupInput("variable", "请选择存在的症状:",
                     c("神经系统病变" = "neu",
                       "肾脏病变" = "gin",
                       "血管炎" = "vas",
                       "溶血/血小板减少" = "hem",
                       "肌炎" = "mio",
                       "关节炎" = "art",
                       "皮肤黏膜病变" = "muc",
                       "浆膜炎" = "ser",
                       "发热/乏力" = "fev",
                       "白细胞减少/淋巴细胞减少" = "leu"
                     )),
  h3("疾病活动度判定结果:"),
  textOutput("data")
)

server <- function(input, output, session) {
  # 定义症状-分值映射表
  score_map <- c(
    "neu" = 8,
    "gin" = 6,
    "vas" = 4,
    "hem" = 3,
    "mio" = 3,
    "art" = 2,
    "muc" = 2,
    "ser" = 2,
    "fev" = 1,
    "leu" = 1
  )
  
  output$data <- renderText({
    # 计算选中症状总分
    total <- sum(score_map[input$variable])
    # 按区间判定活动度
    if (total <= 2) {
      "轻度疾病活动"
    } else if (total > 2 && total < 5) {
      "中度疾病活动"
    } else {
      "重度疾病活动"
    }
  })
}

shinyApp(ui, server)

功能说明

代码已将所有症状名称汉化,选中对应症状后会自动累加分值,实时返回疾病活动度判定结果。如果未选中任何症状,总分0会判定为轻度疾病活动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:06:04