txtProgressBar을 사용하면 진행 과정을 추적 할 수 있습니다.
: 그것부터 시작되는 루프에서의 시간의 건강한 부분을 보낼 수처럼
나는 당신이,하지만 그냥 째려에서 어디로 가야 정확히 알고 참조하는 기능을 충분히 익숙하지 않다, 그것은 본다
# Iteratively updating the model with addition of one block of variable(s)
# Also: extracting the loglikelihood of each estimated model
for(j in 1:length(blocks))
사용한다면 : 당신이 찾고있는 무엇을 줄 수
pb <- txtProgressBar(style=3)
for(j in 1:length(blocks))
setTxtProgressBar(pb, j/length(blocks))
...
}
close(pb)
. 일부 디스플레이는 특정 스타일 진행 막대를 사용하는 경우보다 효과적입니다. 내가 게시 한 코드를 사용하여 출력물이 재미있어 보이면 진행률 표시 줄을 만들 때 다른 스타일을 시도해 보면 더 많은 행운을 누릴 수 있습니다.
R이 일반 함수를 완료하는 데 걸리는 시간을 미리 알 수있는 방법이 없으므로 여기에 일반적인 대답이 없습니다. 다음은 각 루프의 진행 막대와 함께 게시 한 기능입니다.
forward.lmer <- function(
start.model, blocks,
max.iter=1, sig.level=FALSE,
zt=FALSE, print.log=TRUE)
{
# forward.lmer: a function for stepwise regression using lmer mixed effects models
# Author: Rense Nieuwenhuis
# Initialysing internal variables
log.step <- 0
log.LL <- log.p <- log.block <- zt.temp <- log.zt <- NA
model.basis <- start.model
# Maximum number of iterations cannot exceed number of blocks
if (max.iter > length(blocks)) max.iter <- length(blocks)
pb <- txtProgressBar(style=3)
# Setting up the outer loop
for(i in 1:max.iter)
{
#each iteration, update the progress bar.
setTxtProgressBar(pb, i/max.iter)
models <- list()
# Iteratively updating the model with addition of one block of variable(s)
# Also: extracting the loglikelihood of each estimated model
for(j in 1:length(blocks))
{
models[[j]] <- update(model.basis, as.formula(paste(". ~ . + ", blocks[j])))
}
LL <- unlist(lapply(models, logLik))
# Ordering the models based on their loglikelihood.
# Additional selection criteria apply
for (j in order(LL, decreasing=TRUE))
{
##############
############## Selection based on ANOVA-test
##############
if(sig.level != FALSE)
{
if(anova(model.basis, models[[j]])[2,7] < sig.level)
{
model.basis <- models[[j]]
# Writing the logs
log.step <- log.step + 1
log.block[log.step] <- blocks[j]
log.LL[log.step] <- as.numeric(logLik(model.basis))
log.p[log.step] <- anova(model.basis, models[[j]])[2,7]
blocks <- blocks[-j]
break
}
}
##############
############## Selection based significance of added variable-block
##############
if(zt != FALSE)
{
b.model <- summary(models[[j]])@coefs
diff.par <- setdiff(rownames(b.model), rownames(summary(model.basis)@coefs))
if (length(diff.par)==0) break
sig.par <- FALSE
for (k in 1:length(diff.par))
{
if(abs(b.model[which(rownames(b.model)==diff.par[k]),3]) > zt)
{
sig.par <- TRUE
zt.temp <- b.model[which(rownames(b.model)==diff.par[k]),3]
break
}
}
if(sig.par==TRUE)
{
model.basis <- models[[j]]
# Writing the logs
log.step <- log.step + 1
log.block[log.step] <- blocks[j]
log.LL[log.step] <- as.numeric(logLik(model.basis))
log.zt[log.step] <- zt.temp
blocks <- blocks[-j]
break
}
}
}
}
close(pb)
## Create and print log
log.df <- data.frame(log.step=1:log.step, log.block, log.LL, log.p, log.zt)
if(print.log == TRUE) print(log.df, digits=4)
## Return the 'best' fitting model
return(model.basis)
}
R은 (는) 실수를 의미합니까? –
프로그래밍 언어에서와 같이 @BogdanMaier No - R. – Dason
여기 코드가 도움이 될지 모르겠습니다. http://ryouready.wordpress.com/2009/03/16/r-monitor-function-progress-with-a-progress-bar/ –