【发布时间】:2013-12-05 19:28:49
【问题描述】:
我生成了一个无限循环,不知道如何修复它。
我基本上想通过数据框 rnumbers 并根据 rnumbers 中的内容生成带有 1、-1 或 0 的 rstate2
函数step_generator 卡在repeat 函数上。如果rnumber 小于C,我不确定如何将代码放在rstate2 中,然后为下一行重复ifelse 函数,直到获得D 或更大的值。获得 D 后,退出 repeat 函数并返回原始的 for 循环。
这是我的代码:
rnumbers <- data.frame(replicate(5,runif(20000, 0, 1)))
dt <- c(.01)
A <- .01
B <- .0025
C <- .0003
D <- .003
E <- .05
rstate <- rnumbers # copy the structure
rstate[] <- NA # preserve structure with NA's
# Init:
rstate[1, ] <- c(0)
step_generator <- function(col, rnum){
for (i in 2:length(col) ){
if( rnum[i] < C) {
col[i] <- -1
repeat {
ifelse(rnum[i] < E, -1, if(rnum[i] >= D) {break})
}
}
else { if (rnum[i] < B) {col[i] <- -1 }
else {ifelse(rnum[i] < A, 1, 0) } }
}
return(col)
}
# Run for each column index:
for(cl in 1:5){ rstate[ , cl] <-
step_generator(rstate[,cl], rnumbers[,cl]) }
感谢您的帮助。
【问题讨论】:
-
ifelse不是编程控件。我猜问题发生在这里:ifelse(rnum[i] < E, -1, if(rnum[i] >= D) {break})。我没有查看您的代码逻辑,但可能会替换if(cond){cons}else{alt}
标签: r for-loop infinite-loop repeat