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

使用QRISK3包计算CVD风险时返回<0 rows>问题求助

解决QRISK3输出"<0 rows> (or 0-length row.names)"的问题

核心排查方向及解决步骤

  • 变量取值超出模型预设范围
    QRISK3的算法对输入变量有严格的医学取值区间限制,哪怕数据没有缺失,只要单条记录的变量值超出范围,就会被自动过滤,最终返回空结果。
    操作:对照QRISK3的变量要求(比如年龄通常限定在40-74岁、BMI在18-40之间),用summary()查看变量分布:

    summary(your_dataset$age)
    summary(your_dataset$bmi)
    

    找出超出范围的记录并修正,或者确认是否需要调整函数的参数允许范围(部分函数支持自定义区间)。

  • 变量类型/命名不匹配
    QRISK3函数对变量类型有硬性要求:分类变量必须是因子类型而非字符型,数值变量不能是字符格式。哪怕变量名完全一致,类型错误也会导致数据不被识别。
    操作:用str(your_dataset)对比示例数据集的变量类型,将不匹配的类型转换,比如:

    # 将字符型分类变量转为因子
    your_dataset$smoking_status <- as.factor(your_dataset$smoking_status)
    
  • 全量数据被函数默认筛选规则排除
    部分QRISK3函数会自动排除已有心血管病史、或不符合研究人群标准的记录,如果你的数据集所有记录都命中排除规则,就会返回空结果。
    操作:手动模拟函数的筛选逻辑,查看剩余数据量:

    # 以排除已有CVD病史、年龄在40-74岁为例
    filtered_data <- your_dataset %>%
      filter(age >= 40, age <=74, is.na(cvd_history))
    nrow(filtered_data) # 若结果为0,说明全量数据被排除
    

    此时需要检查数据集的入组标准,或者调整函数的筛选参数(比如关闭exclude_cvd选项,具体看函数文档)。

  • 函数参数传递错误
    调用函数时若参数名写错、或传入了不符合要求的参数值(比如country参数指定了数据集不适用的地区),也会导致无结果返回。
    操作:核对函数调用代码与示例代码的参数差异,确保所有变量参数和全局参数(如地区、模型版本)都正确传递:

    # 示例正确调用(根据实际函数调整)
    qrisk_output <- qrisk3(
      data = your_dataset,
      age = age_col,
      sex = sex_col,
      bmi = bmi_col,
      country = "England"
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:25:38