做分类的话你可能少了一句w[,D]=factor(w[,D]),将因变量因子化一下。
下面是试过的代码,做分类用的:
D=10;Z=5;n=nrow(w);w[,D]=factor(w[,D])
Fold=function(Z=5,w,D,seed=7777){
n=nrow(w);d=1:n;dd=list()
e=levels(w[,D]);T=length(e)# 因变量T 类
set.seed(seed)
for(i in 1:T){
d0=d[w[,D]==e];j=length(d0)
ZT=rep(1:Z,ceiling(j/Z))[1:j]
id=cbind(sample(ZT,length(ZT)),d0);dd[]=id}
# 上面每个dd[] 是随机1:Z 及i 类的下标集组成的矩阵
mm=list();for(i in 1:Z){u=NULL;
for(j in 1:T)u=c(u,dd[[j]][dd[[j]][,1]==i,2])
mm[]=u};return(mm)}# 输出Z 个下标集