我的计算机速度很慢,我的一些R计算需要数小时甚至数天才能运行。我确信它们可以提高效率,但同时我想找到一种简单的方法来显示R在进行所需计算方面有多远。
在loop
中,print(i)
可以轻松完成此操作。在进行data.table
计算时是否可以使用类似内容?
例如,以下代码在我的机器上运行大约需要50个小时
q[, ties := sum(orig[pnum == origpat, inventors] %in% ref[pnum == ref.pat, inventors]), by = idx]
q
是data.table
,列origpat
,ref.pat
和idx
(索引)为列。数据表orig
和ref
都包含pnum
和inventors
列。代码只是找到两组中重叠发明者的数量,但给定迭代性质(by = idx
),需要很长时间。
我希望我的屏幕能够发布进度,例如每1000行(大约有20行)。
任何方式都可以做到这一点吗?
答案 0 :(得分:2)
尝试
q[, ies := {
print(.GRP)
sum(orig[pnum == origpat, inventors] %in% ref[pnum == ref.pat, inventors])
}, by=idx]
对于分组操作,这类似于print(i)
。