为什么在 R 中的 model.matrix() 中无法识别数据?
why data not recognized in model.matrix() in R?
我想知道为什么在下面的函数中,我使用基础 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)
我们需要 paste
然后用 formula
换行
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
如果我们需要将 ref.variable 作为未引号传递,则在函数
中使用 substitute
pc <- function(data, ref.variable){
ref.variable <- substitute(ref.variable)
as.data.frame(model.matrix(formula(paste0(ref.variable, "~ .")), data = data))
}
pc(data = CO2, ref.variable = Plant)
我想知道为什么在下面的函数中,我使用基础 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)
我们需要 paste
然后用 formula
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
如果我们需要将 ref.variable 作为未引号传递,则在函数
中使用substitute
pc <- function(data, ref.variable){
ref.variable <- substitute(ref.variable)
as.data.frame(model.matrix(formula(paste0(ref.variable, "~ .")), data = data))
}
pc(data = CO2, ref.variable = Plant)