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

geefirthr包geefirth函数运行报错data为NULL问题解决咨询

问题解决方法

错误根因

  • 你后续对df的三行转换操作完全破坏了原始数据结构:本来df是包含所有自变量、因变量、中心id的多列数据框,经过unlist、最后赋值为df$center_id后,df已经变成仅存储中心id取值的一维向量,模型函数无法找到公式里指定的y、x1~x4等变量,因此触发id为空的报错。
  • 你原始代码里的data(df)是多余操作:你已经通过data.frame()手动构造了df对象,这行代码会尝试加载R内置的同名数据集,反而可能覆盖你自己构造的分析数据。
  • geefirth函数的id参数暂不支持直接传入数据框内的列名,需要显式传入id对应的向量。

正确可运行代码

# 清空之前错误修改的df对象,重新构造原始分析数据集
rm(df)
df <- data.frame(subject_id=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20),
                 center_id=c(2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5),
                 x1=c(0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0),
                 x2=c(0.95,0.95,0.95,0.95,0.95,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.90,0.90,0.90,0.90,0.86,0.86,0.86),
                 x3=c(2.80,2.80,2.8,2.8,2.8,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,2.5,2.5,2.5,2.5,2.6,2.6,2.6),
                 x4=c(4.72,4.72,4.72,4.72,4.72,3.35,3.35,3.35,3.35,3.35,3.35,3.35,3.35,3.81,3.81,3.81,3.81,4.40,4.40,4.40),
                 y=c(1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1))

# 调用模型,id参数显式传入中心id向量
geefirthr::geefirth(y ~ x1 + x2 + x3 + x4, id = df$center_id, data = df, corstr = "independence")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:09:04