如何在 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"
的对象,那么我们可以paste
和formula
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
我正在创建一个函数,用于对模型的 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"
的对象,那么我们可以paste
和formula
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