R 是否有可能跟踪封装重塑中熔化等功能的进展?

R 是否有可能跟踪封装重塑中熔化等功能的进展?,r,progress,reshape,melt,R,Progress,Reshape,Melt,我知道我可以为自己创建的循环或类似的东西创建一个进度条。但是,是否可以通过某种方式跟踪重塑包中的melt()等函数的进度。或者跟踪进度的唯一方法是推断此功能在较小数据集上工作所需的时间 不幸的是,对于一个还没有进度条的函数,没有简单的方法来获取进度条。如果你真的很有动力,你可以深入研究重塑2的功能并添加功能(或者更现代的等价物的源代码,tidyr)。如果您有一种分解数据集的逻辑方法,那么可以使用purr::map并编写一个自定义函数来报告自己的进度。如果你发布一个数据示例,我很乐意向你展示这是如

我知道我可以为自己创建的循环或类似的东西创建一个进度条。但是,是否可以通过某种方式跟踪
重塑
包中的
melt()
等函数的进度。或者跟踪进度的唯一方法是推断此功能在较小数据集上工作所需的时间

不幸的是,对于一个还没有进度条的函数,没有简单的方法来获取进度条。如果你真的很有动力,你可以深入研究重塑2的功能并添加功能(或者更现代的等价物的源代码,
tidyr
)。如果您有一种分解数据集的逻辑方法,那么可以使用
purr::map
并编写一个自定义函数来报告自己的进度。如果你发布一个数据示例,我很乐意向你展示这是如何工作的

另一方面,很难“推断此函数在较小的数据集上工作所需的时间”。下面的代码用n为1000、10000、100000和1000000的数据集重塑数据集,然后乘以它们运行所需的时间。每行数据的时间量变化很大。在我的计算机上,1000行数据集的每行时间比1000000行数据集的每行时间多24倍。这使得预测
melt
功能需要多长时间变得很有挑战性

library(tidyverse)
library(microbenchmark)

# Create dummy data with different numbers of rows
dummy_1k <-
  tibble(group = 1:1000,
         test1 = rnorm(1000),
         test2 = runif(1000))
dummy_10k <-
  tibble(
    group = 1:10000,
    test1 = rnorm(10000),
    test2 = runif(10000)
  )
dummy_100k <-
  tibble(
    group = 1:100000,
    test1 = rnorm(100000),
    test2 = runif(100000)
  )
dummy_1000k <-
  tibble(
    group = 1:1000000,
    test1 = rnorm(1000000),
    test2 = runif(1000000)
  )

# Define a convenience function to melt our dummy data
molten_dummy <- function(dum_df) {
  reshape2::melt(dum_df, id = "group")
}

# Measure how long it takes to melt a row of data based
# on the number of rows in the tibble
microbenchmark(
  molten_dummy(dummy_1k),
  molten_dummy(dummy_10k),
  molten_dummy(dummy_100k),
  molten_dummy(dummy_1000k),
  times = 1000L, unit = "ms"
) %>%
  tbl_df() %>%
  left_join(tribble(
  ~expr, ~count,
  "molten_dummy(dummy_1k)", 1000,
  "molten_dummy(dummy_10k)", 10000,
  "molten_dummy(dummy_100k)", 100000,
  "molten_dummy(dummy_1000k)", 1000000
)) %>%
  mutate(count = as.integer(count), time_per_row = time / count) %>%
  group_by(count) %>%
  summarise(time_per_row = mean(time_per_row)) %>%
  arrange(count)
库(tidyverse)
图书馆(微基准)
#创建具有不同行数的虚拟数据
虚拟_1k%
总结(每行时间=平均值(每行时间))%>%
排列(计数)

恐怕您的问题不清楚。有可能举一个实际的例子吗?不幸的是,我几乎可以肯定没有简单的方法可以做到这一点。