在函数中添加停止条件作为r中的输入参数



我在R中有类似以下循环的东西,我可以运行一段时间或迭代次数:

n_iteration <- 1
time_elapsed <-0
t1 <- Sys.time()

在特定时间内运行:

while (time_elapsed <= 10) {

t2 <- Sys.time()
time_elapsed <- time_elapsed + (t2-t1)
print(paste0('Time elapsed:', time_elapsed, ' Iteration no:', n_iteration))

n_iteration <- n_iteration+1

}

运行多个循环:

while (n_iteration <= 10) {

t2 <- Sys.time()
time_elapsed <- time_elapsed + (t2-t1)
print(paste0('Time elapsed:', time_elapsed, ' Iteration no:', n_iteration))

n_iteration <- n_iteration+1

}

运行它们中的任何一个都可以解决问题。但是,如何将其包装在一个函数中,以便我可以指定使用哪些标准来停止?我想在不重复代码的情况下实现这一点。

我的乏味和次优方法:

loop_func <- function(stopping_criteria='STEPS') {
n_iteration <- 1

time_elapsed <-0
t1 <- Sys.time()

if(stopping_criteria=='TIME'){
while (time_elapsed <= 10) {

t2 <- Sys.time()
time_elapsed <- time_elapsed + (t2-t1)
print(paste0('Time elapsed:', time_elapsed, ' Iteration no:', n_iteration))

n_iteration <- n_iteration+1

}
}else{
while (n_iteration <= 10) {

t2 <- Sys.time()
time_elapsed <- time_elapsed + (t2-t1)
print(paste0('Time elapsed:', time_elapsed, ' Iteration no:', n_iteration))

n_iteration <- n_iteration+1

}
}

}

这可以在不复制while循环两次的情况下完成吗?

您可以为while循环编写另一个函数-

while_function <- function(x) {
while (x <= 10) {
t2 <- Sys.time()
time_elapsed <- time_elapsed + (t2-t1)
print(paste0('Time elapsed:', time_elapsed, ' Iteration no:', x))
x <- x+1

}
}
loop_func <- function(stopping_criteria='STEPS') {
n_iteration <- 1
time_elapsed <-0
t1 <- Sys.time()
if(stopping_criteria=='TIME'){
while_function(time_elapsed)
}else{
while_function(n_iteration)
}
}

最新更新