如何在 r 中通过 model.matrix() 传递变量

how to pass variable through model.matrix() in r

我正在创建一个函数,用于对模型的 select 个预测变量执行交叉验证和岭回归。我的函数的输入是 dataframe 和期望的结果变量 outcome(预测的是什么)。我正在使用 model.matrix() 创建一个我将传递给 glmnet() 的 x 矩阵。我的函数使用 outcome 作为 model.matrix() 中的对象参数,但看起来 outcome 是传递给 model.matrix() 的错误数据类型。通常使用 model.matrix(),我会写类似 model.matrix(Weight~.,dataframe) 的东西。但是,在这种情况下,model.matrix 不会像 model.matrix(outcome~.,dataframe)model.matrix(dataframe$outcome~.,dataframe) 那样工作。有什么想法吗?

如果'outcome'是存储字符串"Weight"的对象,那么我们可以pasteformula

model.matrix(formula(paste(outcome, "~ .")), dataframe) 

具有 'iris' 数据集的可重现示例

data(iris)
outcome <- "Species"
m1 <-  model.matrix(formula(paste(outcome, "~ .")), iris)
m2 <- model.matrix(Species ~ ., iris)
identical(m1, m2)
#[1] TRUE