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

R Shiny计算统计量报错“首个参数必须为数值类型”问题求助

错误原因
  • effsize包的cohen.d()函数要求传入两个数值向量作为比较对象,你当前代码传入的是group_1、group_2两个完整dataframe,包含字符型的军团、士气字段,自然会触发「参数不是数值类型」的报错,不存在被存储为HTML格式的问题,属于传参类型不匹配。
  • 分组变量(Moral)和待比较的数值变量(Casualties)的逻辑没有拆分清楚,没有指定要计算差异的数值列。
  • 输出配置不匹配:cohen.d()返回的是结果列表,你用renderTable渲染不符合输出要求,和前端的verbatimTextOutput也不匹配。
修正方法

你只需要修改cohensd响应式函数和对应输出逻辑即可,核心是提取待比较的数值列(也就是你选的num_var_2对应列),修正后代码片段如下:

cohensd <- eventReactive(input$run_button,{
  req(input$factor, input$num_var_1, input$num_var_2, data_input())
  # 筛选指定军团的数据集
  if (!is.null(input$selected_factors)) {
    df <- data_input()[data_input()[[input$factor]] %in% input$selected_factors,]
  } else {
    df <- data_input()
  }
  # 拆分分组,仅提取待比较的数值列(运行时num_var_2选择Casualties即可)
  group_1_val <- df[df[[input$num_var_1]] %in% input$selected_group, input$num_var_2]
  group_2_val <- df[!(df[[input$num_var_1]] %in% input$selected_group), input$num_var_2]
  # 计算cohen d
  cohen.d(group_1_val, group_2_val)
})

# 把renderTable改成renderPrint,匹配verbatimTextOutput
output$cohensd <- renderPrint(cohensd())

如果需要补充Wilcox检验,逻辑完全一致,只需要增加以下代码即可:

wilcoxt <- eventReactive(input$run_button,{
  req(input$factor, input$num_var_1, input$num_var_2, data_input())
  if (!is.null(input$selected_factors)) {
    df <- data_input()[data_input()[[input$factor]] %in% input$selected_factors,]
  } else {
    df <- data_input()
  }
  group_1_val <- df[df[[input$num_var_1]] %in% input$selected_group, input$num_var_2]
  group_2_val <- df[!(df[[input$num_var_1]] %in% input$selected_group), input$num_var_2]
  wilcox.test(group_1_val, group_2_val)
})
output$wilcoxt <- renderPrint(wilcoxt())
操作注意事项

运行时按以下顺序选择参数即可得到正确结果:

  1. 「Select factor」选择Legion,然后在弹出的多选框里选择你要统计的军团
  2. 「Variable X axis」选择Moral作为分组变量
  3. 「Variable Y axis」选择Casualties作为待比较的数值变量
  4. 「Select group for statistics」选择High作为对比基准组
  5. 点击运行即可得到高士气和中低士气组的伤亡数统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:07