从model.matrix的公式中删除因变量

时间:2017-09-14 08:00:43

标签: r matrix

我正在学习如何处理model.matrix。例如,为了创建样本外预测,我从模型中提取公式,说它是一个线性模型。 使用函数formula(mymodel)提取:

form <- formula(y ~ x1 + x2 * x3)

现在,要创建预测,我需要一个没有y的model.matrix。我可以手工打字:

X <- model.matrix(~ x1 + x2 * x3, data=out.of.sample.data)

但是,有没有办法使用update来摆脱我公式的左边部分?

谢谢!

2 个答案:

答案 0 :(得分:2)

通过将响应变量设置为update

,可以使用NULL完成此操作
form <- formula(y ~ x1 + x2 * x3)
newform <- update(form, NULL ~ .)

答案 1 :(得分:0)

这就是我通常这样做的方式。我不知道内置功能。<​​/ p>

df = data.frame(y=rnorm(10), x1=rnorm(10), x2=rnorm(10), x3=rnorm(10))
mymodel = lm(y ~ x1 + x2 + x3, df)
form_vars_only = 
  formula(paste("~",strsplit(as.character(formula(mymodel)),"~")[[3]]))