R控制台中显示两个堆叠的进度条(带代码)
可以这样做吗?我想在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
###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