编辑:已经回答了这个问题。我需要做的就是使用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
不喜欢它们?