1

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

4

1 回答 1

0

如果 '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
于 2018-04-13T14:04:37.030 回答