[英]Is there an elegant way to show a progress bar during the computation of a grouped data.frame in R?
我正在将复杂的 function 应用于分组的 data.frame。 为简单起见,在这里,这个 function 将被视为 colSums function。 假设我们有以下data.frame:
df <- data.frame(A=runif(600000,0,1),
B=rep(c("group1", "group2","group3","group4","group5","group6"), 100000))
此外,我想执行 dplyr 链:
df <- df %>%
group_by(.data$B) %>%
summarize(colSums(across()))
在此计算期间,我希望有一个进度条显示剩余时间。 例如:
[==========================>] 100%
我知道 dplyr 中有解决方案,但据我所知它们已被取代。 因此,我想使用 package Progress。 此进度条基于 for 循环期间的刻度更新。 我想知道,这个 dplyr 链是否可行。 到目前为止,我无法提出解决方案。 有任何想法吗?
这是一个使用progress package的解决方案。 您必须初始化进度条并告诉它组/刻度的数量。 然后在您的自定义计算中,您增加条形。
library(tidyverse)
library(progress)
df <- data.frame(A=runif(600000,0,1),
B=rep(c("group1", "group2","group3","group4","group5","group6"), 100000)) %>%
group_by(B)
my_slow_function <- function(col){
pb$tick()
Sys.sleep(0.5)
sum(col)
}
num_ticks <- n_groups(df)
pb <- progress_bar$new(format = "[:bar] :current/:total (:percent) elapsed :elapsed eta :eta",
total = num_ticks)
df %>%
summarize(output = my_slow_function(A))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.