0

这个问题已经在这里这里问过,但对我的问题没有有用的答案。我的数据集中没有丢失数据,并且正在尝试model.matrixmodel.frame. 这是一个可重现的示例:

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)))

为什么以及如何解决这个问题?或者,如何以另一种有效且稳健的方式获得带有截距列的右侧值矩阵?

4

1 回答 1

1

问题是model.matrix()需要一个公式或术语对象作为第一个参数。解决方案:

model.matrix(y ~ x + z, model.frame(lm(y ~ x + z, dat)))
于 2017-11-24T13:02:37.737 回答