model.frame.default中的LME错误...变量长度不同

时间:2019-05-16 15:57:30

标签: r nlme

我正在尝试使用LME运行随机效应模型。它是一个较大函数的一部分,我希望它具有灵活性,以便可以将固定(理想情况下是随机的)效果变量名称作为变量传递给lme函数。 get()对于从lm开始的工作非常有效,但是似乎只会抛出模棱两可的“模型.frame.default中的错误(公式=〜var1 + var2 + ID,数据= list(:可变长度不同( “ ID”)。“我很困惑,数据长度相同,此数据或实际数据中都没有NA,...

set.seed(12345) #because I got scolded for not doing this previously
var1="x"
var2="y"
exdat<-data.frame(ID=c(rep("a",10),rep("b",10),rep("c",10)),
           x = rnorm(30,100,1),
           y = rnorm(30,100,2))
#exdat<-as.data.table(exdat) #because the data are actually in a dt, but that doesn't seem to be the issue

效果很好

lm(log(get(var1))~log(get(var2)),data=exdat)
lme(log(y)~log(x),random=(~1|ID), data=exdat)

不起作用

 lme(log(get(var1,pos=exdat))~log(get(var2)),random=(~1|ID), data=exdat)

不起作用,但引发新的错误代码:“ model.frame.default中的错误(公式=〜var1 + var2 + rfac + exdat,数据= list(:变量'exdat'的无效类型(列表))”)

rfac="ID"
lme(log(get(var1))~log(get(var2)),random=~1|get(rfac,pos=exdat), data=exdat)

1 个答案:

答案 0 :(得分:0)

部分问题似乎与nlme软件包有关。如果您可以考虑使用lme4,则可以通过以下方式获得所需的结果:

lme4::lmer(log(get(var1)) ~ log(get(var2)) + (1 | ID),
       data = exdat)