显示数据进度的简单方法。" by"循环

时间:2016-02-22 11:10:31

标签: r data.table

我的计算机速度很慢,我的一些R计算需要数小时甚至数天才能运行。我确信它们可以提高效率,但同时我想找到一种简单的方法来显示R在进行所需计算方面有多远。

loop中,print(i)可以轻松完成此操作。在进行data.table计算时是否可以使用类似内容?

例如,以下代码在我的机器上运行大约需要50个小时

q[, ties := sum(orig[pnum == origpat, inventors] %in% ref[pnum == ref.pat, inventors]), by = idx]

qdata.table,列origpatref.patidx(索引)为列。数据表origref都包含pnuminventors列。代码只是找到两组中重叠发明者的数量,但给定迭代性质(by = idx),需要很长时间。 我希望我的屏幕能够发布进度,例如每1000行(大约有20行)。

任何方式都可以做到这一点吗?

1 个答案:

答案 0 :(得分:2)

尝试

q[, ies := {
  print(.GRP)
  sum(orig[pnum == origpat, inventors] %in% ref[pnum == ref.pat, inventors])
}, by=idx] 

对于分组操作,这类似于print(i)