我在建立交叉验证的过程中出现了问题,本人初学者,求大神指点,作业今晚要交,很急,谢了
程序如下
> D=2;Z=5;n=nrow(w)#因变量为第二个“STA”
> Fold=function(Z=5,w,D,seed=7777){
+ n=nrow(w);d=1:n;dd=list()
+ e=levels(w[,D]);T=length(e)
+ set.seed(seed)
+ for(i in 1:T){
+ d0=d[w[,D]==e[i]];j=length(d0)
+ ZT=rep(1:Z,ceiling(j/Z))[1:j]
+ id=cbind(sample(ZT,length(ZT)),d0);dd[[i]]=id}
+ 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[[i]]=u} #mm[[i]]
+ return(mm)}
>
> mm=Fold(Z,w,D,8888)
结果提示错误说:
Error in if (length(x) == 1L && is.numeric(x) && x >= 1) { :
需要TRUE/FALSE值的地方不可以用缺少值