我正在编写一个用于从线性回归模型获取测试错误的函数。
我的输入是一个包含模型各部分的列表
model.1 <- list("medv","~.","Boston_Ready")
names(model.1) <- c("response", "input","dataset")
我的函数根据该输入计算验证集错误
ValidationError <- function(model){
df <- get(model$dataset)
formula <- paste(model$response,model$input)
response <- model$response
#validation set
train <- sample(nrow(df), (nrow(df)/2))
fit_train <- lm(formula,data=df,subset=train)
Valid_MSE <- mean(df[-train,]$response - predict(fit_train, df[-train,]))^2
print(Valid_MSE)
}
错误显示为Error: attempt to apply non-function
这是因为Valid_MSE
的定义包括df[-train,]$response
我也尝试过
df[-train,]$get(response)
df[-train,]$paste(response)
如何从数据框中调用特定列?我可以使用列表别名“响应”来做到这一点吗?