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
相关产品推荐
相关产品推荐

