我想知道为什么在我的函数下面我使用基础R数据集CO2
和Plant
作为其数据列之一我得到以下错误:
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)
答案 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