data.table聚合操作的进度条

时间:2016-06-30 16:56:00

标签: r data.table

ddply有一个.progress来获取正在运行的进度条,R中是否有等效的data.table

2 个答案:

答案 0 :(得分:5)

是的,您可以使用您想要的任何进度状态。

library(data.table)
dt = data.table(a=1:4, b=c("a","b"))
dt[, {cat("group:",b,"\n"); sum(a)}, b]
#group: a 
#group: b 
#   b V1
#1: a  4
#2: b  6

如果您询问使用fread加载csv文件的进度,则会自动显示更大的数据集。同样如谢尔盖在评论中所提到的,您可以使用verbose参数来获取更多信息,包括fread[.data.table

如果您想要处理的组百分比。

grpn = uniqueN(dt$b)
dt[, {cat("progress",.GRP/grpn*100,"%\n"); sum(a)}, b]
#progress 50 % 
#progress 100 % 
#   b V1
#1: a  4
#2: b  6

答案 1 :(得分:0)

关注@ jangorecki的优秀答案,这是一种使用文本进度条的方法:

library(data.table)
dt = data.table(a=1:4, b=c("a","b"))
grpn = uniqueN(dt$b)
pb <- txtProgressBar(min = 0, max = grpn, style = 3)
dt[, {setTxtProgressBar(pb, .GRP); Sys.sleep(0.5); sum(a)}, b]
close(pb)