gpt4 book ai didi

r - 在 R 中为启动功能添加进度条

转载 作者:行者123 更新时间:2023-12-04 11:59:33 31 4
gpt4 key购买 nike

我正在尝试向 R 中的引导函数添加进度条。
我试图使示例函数尽可能简单(因此我在本示例中使用了 mean)。

library(boot)
v1 <- rnorm(1000)
rep_count = 1

m.boot <- function(data, indices) {
d <- data[indices]
setWinProgressBar(pb, rep_count)
rep_count <- rep_count + 1
Sys.sleep(0.01)
mean(d, na.rm = T)
}

tot_rep <- 200
pb <- winProgressBar(title = "Bootstrap in progress", label = "",
min = 0, max = tot_rep, initial = 0, width = 300)
b <- boot(v1, m.boot, R = tot_rep)
close(pb)

bootstrap 运行正常,但问题是 rep_count 的值不会在循环中增加并且进度条在此过程中保持卡住状态。

如果我检查 rep_count 的值bootstrap完成后,还是1。

我究竟做错了什么?也许引导功能不是简单地插入 m.boot函数在循环中,因此其中的变量不会增加?

谢谢你。

最佳答案

您可以使用包 progress 如下:

library(boot)
library(progress)

v1 <- rnorm(1000)

#add progress bar as parameter to function
m.boot <- function(data, indices, prog) {

#display progress with each run of the function
prog$tick()

d <- data[indices]
Sys.sleep(0.01)
mean(d, na.rm = T)

}

tot_rep <- 200

#initialize progress bar object
pb <- progress_bar$new(total = tot_rep + 1)

#perform bootstrap
boot(data = v1, statistic = m.boot, R = tot_rep, prog = pb)
我还没有完全弄清楚为什么需要为 progress_bar 设置迭代次数为 +1 总引导复制(参数 R ),但这是我自己的代码所必需的,否则会引发错误。似乎 bootstrap 函数比您在参数 R 中指定的多运行一次,所以如果进度条设置为只运行 R有时,它认为工作在真正完成之前就已经完成。

关于r - 在 R 中为启动功能添加进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673931/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com