R:为什么使用paste()生成的公式不能与model.matrix()一起使用?

时间:2017-04-27 14:17:47

标签: r model

编辑:已经回答了这个问题。我需要做的就是使用as.formula()将粘贴的文本强制转换为公式。

我一直在尝试将使用粘贴命令创建的公式传递给model.matrix()

使用时效果很好:

mm <- model.matrix(~ V1+V2+V3+V4, data = mode_set)

如果我使用变量名称和粘贴函数的向量,它也可以工作:

varlist <- c("V1", "V2", "V3", "V4")

mm <- model.matrix(paste("~ ",paste(varlist, collapse="+"),sep = ""))

但是,如果我将paste()函数的输出保存到另一个变量,并将其传递给model.matrix(),我会得到一个$运算符原子向量错误。

form <- paste("~ ",paste(varlist, collapse="+"),sep = "")
mm <- model.matrix(form, data=model_set)

如果我从粘贴的变量名称中删除引号,它也会失败:

form <- noquote(paste("~ ",paste(varlist, collapse="+"),sep = ""))

以这种方式制作的公式在传递给我一直使用的模型时很好(GLM,earth,randomForest,rpart等) - 为什么model.matrix不喜欢它们?

0 个答案:

没有答案