R控制台中显示两个堆叠的进度条(带代码)

R控制台中显示两个堆叠的进度条(带代码),r,function,console,progress-bar,progress,R,Function,Console,Progress Bar,Progress,可以这样做吗?我想在R中同时显示两个垂直堆叠的进度条,作为一个函数在另一个更大的函数中运行。 一个用于函数中较大的一个的整体进程状态,另一个用于函数中的各个进程(下载等) 如果可能的话,我想使用进度包的进度条(如果不可能,则使用base或任何很酷的解决方案!) 我想呆在控制台中,而不是用tk或类似这样的解决方案绘制进度条() 提前谢谢 以下示例在进展(首选)和基础R中模拟的预期功能和结果: ###Example in progress package(preferred) library(pr

可以这样做吗?我想在R中同时显示两个垂直堆叠的进度条,作为一个函数在另一个更大的函数中运行。

一个用于函数中较大的一个的整体进程状态,另一个用于函数中的各个进程(下载等)

  • 如果可能的话,我想使用进度包的进度条(如果不可能,则使用base或任何很酷的解决方案!)

  • 我想呆在控制台中,而不是用tk或类似这样的解决方案绘制进度条()

  • 提前谢谢

    以下示例在进展(首选)和基础R中模拟的预期功能和结果:

     ###Example in progress package(preferred)
    library(progress)
    
    ###Create the progress bars
    overallbar <- progress_bar$new(
      format = " downloading :what [:bar] :percent Guestimated Remaining OVERALL: :eta",
      clear = FALSE, total = 1000, width = 60)
    statusbar <- progress_bar$new(
      format = " [:bar] :percent Guestimated Remaining CURRENT FILE: :eta",
      clear = FALSE, total = 100, width = 60)
    
    ###Only displays the statusbar when I'd like to display both
    
    for (i in 1:1000) {
      overallbar$tick()
      statusbar$tick()
      Sys.sleep(1 / 1000)
    }
    
    ###Desired outcome (imitation only)
    downloading THIS FILE NOW [] 100% Guestimated remaining OVERALL:  0s
    [============] 100% Guestimated remaining CURRENT FILE:  0s
    
    ####进度包示例(首选)
    图书馆(进度)
    ###创建进度条
    
    至少在基本的R情况下,进度条通过简单地重新绘制同一条线来工作。可以使用ANSI转义序列在行之间跳转。修改基本R示例

    cat("OVERALL PROGRESS:\n\n") # 2 newlines leaving a blank between headers
    cat("File Progress:\n") # 1 newline leaves in position for pb2
    for (i in 1:1000) {
      cat("\033[2A")   # up 2 lines for pb1
      setTxtProgressBar(pb1, i)
      cat("\033[2B")   # down 2 lines for pb2
      setTxtProgressBar(title="File Progress:", pb2, i)
      Sys.sleep(1 / 1000)
    }
    cat("\033[2B\n") # for good measure
    

    这在MacOS终端中也可以使用,虽然我没有在那里进行测试。

    谢谢!我最终得到了非常类似的结果,但使用writeline并用cat(“\014”)清除整个控制台。我得掸掉超级旧的windows电脑上的灰尘,测试一下你的电脑是否在windows上工作。我认为你不能在windows中清除整个控制台,所以我怀疑我的控制台在windows中是否工作,你能在windows中上下移动超过一行吗?我知道存在严重的限制。
    cat("OVERALL PROGRESS:\n\n") # 2 newlines leaving a blank between headers
    cat("File Progress:\n") # 1 newline leaves in position for pb2
    for (i in 1:1000) {
      cat("\033[2A")   # up 2 lines for pb1
      setTxtProgressBar(pb1, i)
      cat("\033[2B")   # down 2 lines for pb2
      setTxtProgressBar(title="File Progress:", pb2, i)
      Sys.sleep(1 / 1000)
    }
    cat("\033[2B\n") # for good measure