首页 > 解决方案 > 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函数时会出现问题。任何人都可以指出任何错误吗?

标签: r

解决方案


在每个地方替换ols_step_best_subset(subsetb)olsrr::ols_step_best_subset(subsetb)


推荐阅读