r - eval(model$call$data) 中的错误:找不到对象 data1
问题描述
假设我有以下函数来运行模拟研究。我的功能如下:-
simulation<-function(n, method, process, bsd){
M<-matrix(1:(10*n), nrow=n, ncol=10)
U<-matrix(data=NA, nrow=5, ncol=1)
for(i in 1:5) {
if(process=='1') {
for(j in 1:10) {
M[,j]<-runif(n, min=0, max=5*j)
}
epsilon<-rnorm(n, mean=0, sd=bsd)
}
y<-1*M[,2]+2.5*M[,6]+0.8*M[,9]+epsilon
data1<- data.frame("X1"=M[,2], "X2"=M[,6], "X3"=M[,9],"X4"=M[,1],"X5"=M[,3],"X6"=M[,4],"X7"=M[,5],"X8"=M[,7],"X9"=M[,8],"X10"=M[,10])
subsetb<-lm(y~0+., data=data1)
if(method=='1'){
k<-ols_step_best_subset(subsetb)
U[i,]<-k$predictors[which.max(k$adjr)]
}
if(method=='2'){
k<-ols_step_best_subset(subsetb)
U[i,]<-k$predictors[which.min(k$aic)]
}
}
V<-data.frame("SV"=U[,1])
V$SV <- sapply(V$SV, function(i){i1 <- strsplit(as.character(i), ' ')[[1]];
i2 <- i1[order(as.numeric(gsub('\\D+', '', i1)))];
paste(i2, collapse = ' ')})
return(V)
}
每当我尝试执行时system.time(simulation(50, '1', '1', 1))
,我都会收到以下带有描述的错误消息:-
Error in eval(model$call$data) : object 'data1' not found
7.
eval(model$call$data)
6.
eval(model$call$data)
5.
mod_sel_data(model)
4.
ols_step_best_subset.default(subsetb)
3.
ols_step_best_subset(subsetb)
2.
simulation(50, "1", "1", 1)
1.
system.time(simulation(50, "1", "1", 1))
我不知道为什么它显示data1
未找到。我想当我调用该lm
函数时会出现问题。任何人都可以指出任何错误吗?
解决方案
在每个地方替换ols_step_best_subset(subsetb)
。olsrr::ols_step_best_subset(subsetb)
推荐阅读
- mysql - kubernetes-How do I expose mysql service to another pod?
- c - 从整数转换为 IEEE 754 浮点数时如何进行舍入?
- javascript - 我的 Javascript 没有将我的 @RendorBody 推倒
- terraform-provider-aws - 使用 count.index 创建子网 ID 时,如何将不同的子网 ID 传递给 terraform aws_instance 资源?
- office-js - Windows 插件的 ItemSend 事件 Outlook 未触发
- python - 如何将 Cython 与诗歌一起使用?
- sql - [Right] .. JOIN 在实践中的用法
- java - 路径即文件上的多个过滤器
- javascript - 单击时清除闪电输入和闪电文本区域?
- c# - 在 VS2019 中使用 API Gateway 部署到 AWS Lambda 会给出 {"message":"Internal Server Error"}