我想为带有包“rpart”的分类树模型执行 5 倍 CV,在此之前我使用代码将我的数据划分为 5 个子数据集,并且出现 1 个错误:在数据划分步骤期间出现错误,例如:
[]中的错误*tmp*
:下标超出范围
我已经google了错误,但仍然无法解决。
我的数据有点大,超过 370,000 行和 13 个预测变量。我的响应变量中有 51 个级别。
> w <- read.csv('D:/R code/animal2.csv',header = T)
> names(w)
[1] "cluster_ward50" "AAT10" "AAT0" "ARIDITY" "VEGETATION"
[6] "PRECITAT" "TMAX" "TMIN" "PREMAX" "PREMIN"
[11] "AMT" "T_OC" "ELEMAX" "ELEMIN"
>
> w$cluster_ward50 <- as.factor(w$cluster_ward50)
> w$VEGETATION <- as.factor(w$VEGETATION)
> d <- 1:370827
> dd <- list()
> Z <- 5
> nn <- levels(w$cluster_ward50)
> KL <- length(nn)
> for(i in 1:KL)
+ dd[[i]] <- d[w$cluster_ward50==nn]
> kk<- NULL
> for(i in 1:KL)
+ kk <- c(kk,round(length(dd[[i]])/Z))
> set.seed(1111)
> yy <- list(NULL,NULL,NULL)
> for(i in 1:KL){xx <- list()
+ uu<-dd[[i]]
+ for(j in 1:(Z-1)){xx[[j]] <- sample(uu,kk)
+ uu<- setdiff(uu,xx[[j]])}
+ xx[[Z]] <- uu
+ for(k in 1:Z)
+ yy[[i]][[k]] <- xx[[k]]}
Error in `*tmp*`[] : subscript out of bounds
> mm <- list(NULL,NULL,NULL,NULL,NULL)
> for(i in 1:Z)
+ for(j in 1:KL)
+ mm[[i]] <- c(mm[[i]],yy[[j]][])
Error in yy[[j]] : subscript out of bounds