model.frame.default(object, data, xlev = xlev) 中的错误:变量长度不同(为 'z' 找到)
Error in model.frame.default(object, data, xlev = xlev) : variable lengths differ (found for 'z')
此问题已在 here and here 之前提出,但没有对我的问题有帮助的答案。我的数据集中没有缺失数据,我正在尝试从 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)))
为什么以及如何解决这个问题?或者,如何以另一种有效且稳健的方式获得带有截距列的右侧值矩阵?
问题是 model.matrix()
需要公式或术语对象作为第一个参数。解决方案:
model.matrix(y ~ x + z, model.frame(lm(y ~ x + z, dat)))
此问题已在 here and here 之前提出,但没有对我的问题有帮助的答案。我的数据集中没有缺失数据,我正在尝试从 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)))
为什么以及如何解决这个问题?或者,如何以另一种有效且稳健的方式获得带有截距列的右侧值矩阵?
问题是 model.matrix()
需要公式或术语对象作为第一个参数。解决方案:
model.matrix(y ~ x + z, model.frame(lm(y ~ x + z, dat)))