为什么数据在R中的model.matrix()中无法识别?

时间:2018-03-23 05:55:16

标签: r function regression lm

我想知道为什么在我的函数下面我使用基础R数据集CO2Plant作为其数据列之一我得到以下错误:

Error in eval(predvars, data, env) : object 'Plant' not found

如何解决这个问题?

pc <- function(data, ref.variable){

as.data.frame(model.matrix(ref.variable ~ ., data = data))
}

pc(data = CO2, ref.variable = Plant) # Gives Error

## NOTE: it works OK this way: model.matrix(Plant ~ ., data = CO2)

1 个答案:

答案 0 :(得分:1)

我们需要animals,然后用paste

换行
formula

如果我们需要将ref.variable作为不带引号传递,那么在函数中使用pc <- function(data, ref.variable){ as.data.frame(model.matrix(formula(paste0(ref.variable, "~ .")), data = data)) } res <- pc(data = CO2, ref.variable = "Plant") head(res) # (Intercept) TypeMississippi Treatmentchilled conc uptake #1 1 0 0 95 16.0 #2 1 0 0 175 30.4 #3 1 0 0 250 34.8 #4 1 0 0 350 37.2 #5 1 0 0 500 35.3 #6 1 0 0 675 39.2

substitute