是否有函数将匹配的响应向量返回到model.matrix?

是否有函数将匹配的响应向量返回到model.matrix?,r,glmnet,model.matrix,R,Glmnet,Model.matrix,在glmnet()中,我必须指定原始X矩阵和响应向量Y(不同于lm,在lm中可以指定模型公式)。model.matrix()将正确地从X矩阵中删除不完整的观测值,但它不包括输出对象中的响应。所以我会有这样的东西: mydf glmnet(y = mydf$response, x = model.matrix(myformula, mydf)[,-1], ...) 当model.matrix删除观测值时,y和x尺寸将不匹配。是否有将y数据与x对齐的功能?尝试使用model.frame和model

在glmnet()中,我必须指定原始X矩阵和响应向量Y(不同于lm,在lm中可以指定模型公式)。model.matrix()将正确地从X矩阵中删除不完整的观测值,但它不包括输出对象中的响应。所以我会有这样的东西:

mydf
glmnet(y = mydf$response, x = model.matrix(myformula, mydf)[,-1], ...)

当model.matrix删除观测值时,y和x尺寸将不匹配。是否有将y数据与x对齐的功能?

尝试使用
model.frame
model.response

> d <- data.frame(y=rnorm(3), x=c(1,NA,2), z=c(NA, NA, 1))
> d
           y  x  z
1 -0.6257260  1 NA
2 -0.4979723 NA NA
3 -1.2233772  2  1
> form <- y~x
> mf <- model.frame(form, data=d)
> model.response(mf)
        1         3
-0.625726 -1.223377
> model.matrix(form, mf)
  (Intercept) x
1           1 1
3           1 2
attr(,"assign")
[1] 0 1
>d
y×z
1-0.6257260 1 NA
2-0.4979723纳
3 -1.2233772  2  1
>表单mf模型响应(mf)
1         3
-0.625726 -1.223377
>模型矩阵(表格,mf)
(截距)x
1           1 1
3           1 2
属性(,“分配”)
[1] 0 1

我不熟悉
glmnet
,可能情况是
mf
就足够了,只需传递
y=mf[1,]
x=mf[-1,]

分两步完成
newdat这只能部分工作,因为na.omit将删除所有OB,包括模型中未使用的变量的NAs。当然。。。您只选择您感兴趣的变量
na.omit(mydf[vars])
——但是Josh给出了一个很好的答案