r - 在 R 中计算分组 data.frame 期间,是否有一种优雅的方式来显示进度条?
问题描述
我正在将一个复杂的函数应用于分组的 data.frame。为简单起见,在这里,此函数将被视为 colSums 函数。假设我们有以下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 中有解决方案,但据我所知,它们已被取代。因此,我想使用包 Progress。此进度条基于 for 循环期间的刻度更新。我想知道,这个 dplyr 链是否可行。到目前为止,我无法提出解决方案。有任何想法吗?
解决方案
这是一个使用进度包的解决方案。您必须初始化进度条并告诉它组/刻度的数量。然后在您的自定义计算中,您增加条形。
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))
推荐阅读
- java - Selenium WebDriver 如何获取 WebElement 的按钮
- python - Python:如何在地图上绘制飞行轨迹/例程
- c# - 切换到 .net core 3 端点路由后,身份 UI 不再有效
- spring-mvc - 在 th:replace 中使用变量不会呈现模板
- excel - 如何从 Delphi 加速 Excel 格式化?
- java - 如何使用我的 java 应用程序控制 nginx 反向代理?
- algorithm - 将 n 个对象分成 k 个组的方法有多少种,使得没有一个组的对象比以前形成的组少?
- javascript - 删除firebase上的节点时出现问题
- aspose - 打开未使用密码加密的文档
- javascript - 我怎样才能打破表格的段落属性