如何在R

时间:2018-03-14 11:20:30

标签: r

假设我有一个包含for循环部分的函数。这个for循环适用于10次迭代。我如何从结果中知道函数现在在级别(迭代)数字上工作,比如5

也就是说,我希望我的函数让我知道当前的迭代次数。

例如, 我希望结果是这样的:

Iteration 1 starts

some result

iteration 1 ends

iteration 2 starts

some result

iteration 2 ends ... ...

请注意,这不是我原来的功能。在我的原始函数中,我在模型列表上使用optim函数,我真的需要知道当前模型是什么。

这是一个一般例子:

Myfun <- function(x,y){
  v <- list()
  for(i in 1:100){
    v[[i]] <- sum(x[[i]], y[[i]])
    cat(v, "\n")

  }
  v
}
x <- rnorm(100)
y <- rnorm(100)
Myfun(x=x, y=y)

1 个答案:

答案 0 :(得分:0)

方法1

for循环内输出当前迭代步骤。

Myfun <- function(x,y) {
    v <- list()
    for (i in 1:100) {
        v[[i]] <- sum(x[[i]], y[[i]])
        cat(sprintf("Step %i / 100 done\n", i))
    }
    v
}

方法2

使用进度条(有关详细信息,请参阅?txtProgressBar。)

Myfun <- function(x,y) {
    v <- list()
    pb <- txtProgressBar(min = 0, max = 100, style = 3)
    for (i in 1:100) {
        v[[i]] <- sum(x[[i]], y[[i]])
        setTxtProgressBar(pb, i)
    }
    close(pb)
    v
}

请注意,原始cat(v, "\n")中的Myfun行会出错。