【发布时间】:2017-11-24 10:20:07
【问题描述】:
在here 和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)))
为什么以及如何解决这个问题?或者,如何以另一种有效且稳健的方式获得带有截距列的右侧值矩阵?
【问题讨论】:
-
mt = model.matrix(model.frame(lm(y ~ x,dat)))不要运行。 -
@cuttlefish44 是对的,那行代码不会像你写的那样运行。那是因为您需要查看
help("model.matrix")以查看函数需要哪些参数;您需要一个公式或术语对象作为第一个参数。试试model.matrix(y ~ x + z, model.frame(lm(y ~ x + z, dat)))。 -
model.matrix具有默认和 lm 方法。首先将其写为model.matrix(y ~ x + z, dat),或者如果您需要将其写为lm对象的函数然后model.matrix(lm(y ~ x + z, dat))
标签: r model.matrix