model.frame.default(object,data,xlev = xlev)中的错误:变量长度不同(找到'z')

lnulla 发布于 2019-11-08 model.matrix 最后更新 2019-11-08 22:59 9 浏览

这个问题已在herehere之前提出,但对于我的问题没有有用的答案。我的数据集中没有丢失数据,我试图从model.frame创建一个model.matrix。这是一个可重现的例子:

dat = data.frame(x = rep(1:3, each = 5), 
    y = rnorm(15), 
    z = rep(c(1,1.1,1.3), each = 5))
# this works
mt = model.matrix(model.frame(lm(y ~ x,dat)))
# this produces the error
mt = model.matrix(model.frame(lm(y ~ x + z,dat)))
为什么以及如何解决这个问题?或者,我怎样才能获得另一个拦截列的右侧值矩阵,但有效和稳健的方式?
已邀请:

gipsam

赞同来自:

问题是model.matrix()期望公式或术语对象作为第一个参数。解:

model.matrix(y ~ x + z, model.frame(lm(y ~ x + z, dat)))