Предположим, у меня есть следующая функция для запуска исследования симуляции. Я функционирую следующим образом: -
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
. Может ли кто-нибудь указать на любую ошибку?