我正在创建一个函数来执行交叉验证和岭回归来为模型选择预测器。我的函数的输入是dataframe和期望的结果变量outcome (所预测的内容)。我使用model.matrix()来创建一个x矩阵,并将其传递给glmnet()。我的函数在model.matrix()中使用model.matrix作为对象参数,但是看起来outcome是通过model.matrix()传递的错误数据类型。通常使用model.matrix(),我会编写类似于model.matrix(Weight~.,dataframe)的东西。然而,在这种情况下,model.matrix不会像model.matrix(outcome~.,dataframe)或model.matrix(dataframe$outcome~.,dataframe)那样工作。有什么想法吗?
发布于 2018-04-13 14:04:37
如果“结果”是存储字符串"Weight"的对象,那么我们可以使用formula进行paste
model.matrix(formula(paste(outcome, "~ .")), dataframe) 一个具有“虹膜”数据集的可复制示例
data(iris)
outcome <- "Species"
m1 <- model.matrix(formula(paste(outcome, "~ .")), iris)
m2 <- model.matrix(Species ~ ., iris)
identical(m1, m2)
#[1] TRUEhttps://stackoverflow.com/questions/49818798
复制相似问题