for dentro de while

Boa noite, estou com um código que necessita o uso de um for dentro de um while. Entretanto, o uso do for aumentou o tempo de execução. Gostaria de saber se alguém tem alguma sugestão para contornar este problema???? Acredito que a questão seja organizacional, portanto, não estou enviando um CMR mas caso seja necessário será encaminhado!!!!!!! dif <- 1 tol <- 1e-05 i <- 0 neff <- c(2) while(dif > tol){ i <- i + 1 LHS <- rBind( cBind(XpX, XpZ), cBind(ZpX, (ZpZ + Ginv)) ) invLHS <- solve(LHS) est <- solve(LHS,RHS) b <- est[1:ncol(X.f),] u <- est[(ncol(X.f) + 1):nrow(est),] sig2E <- (ypy - t(b)%*%Xpy - t(u)%*%Zpy)/(N - rankX) sig2U <- numeric(0) for(j in 1:length(neff)){ sig2U <- c(sig2U, ( t(est[z[j]:lz[j],])%*%est[z[j]:lz[j],] + sig2E*sum(diag( invLHS[z[j]:lz[j], z[j]:lz[j]] )) )/neff[j]) } sig2U <- do.call(rBind,lapply(sig2U,as.matrix)) rel <- as.numeric(sig2E)/sig2U if(!is.null(var)){ lamb <- rel ratio <- rep(lamb,neff) newvar <- rBind(sig2U,sig2E) cds <- sig2U/sum(newvar) dif <- as.numeric(max(abs(newvar - ovar))) } if(is.null(var)){ lamb <- rel ratio <- rep(lamb,neff) newvar <- rBind(sig2U,sig2E) cds <- sig2U/sum(newvar) dif <- as.numeric(max(abs(cds - ocds))) } ovar <- newvar ocds <- cds oratio <- ratio olamb <- lamb Ginv <- Diagonal(sum(neff),oratio) }Desde já agradeço por qualquer colaboração. Atenciosamente, Tiago. ################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas #################################################################

O problema está no crescimento do objeto sig2U dentro do 'for' assinalado. Leia o Círculo 2 do R inferno para entender pq este tipo de prática não é aconselhável http://www.burns-stat.com/pages/Tutor/R_inferno.pdf Att., Rubem
participantes (2)
-
Rubem Kaipper Ceratti
-
Tiago Souza Marçal