【发布时间】:2016-02-22 11:10:30
【问题描述】:
我的计算机速度很慢,我的一些 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),它需要很长时间。
我希望我的屏幕发布进度,例如每 1,000 行(大约有 20 个 mio 行)。
有什么方法可以简单地做到这一点?
【问题讨论】:
-
你能给出一个最小的可重现问题的例子吗?也许有人也可以建议一种更有效/更快的方法来做到这一点
-
感谢您的评论,您可以在此链接中找到一个示例:stackoverflow.com/questions/35310315/… 前段时间我发布了一个与此问题非常相似的问题,
data.table中的解决方案是有人提出的最好的与。 -
请编辑您的问题,使其成为独立资源,不依赖于其他问题/链接。
-
试试
ies := {print(.GRP); sum(orig[pnum == origpat, inventors] %in% ref[pnum == ref.pat, inventors])}这类似于print(i) -
@Frank,太棒了,这正是我想要的。谢谢大家!
标签: r data.table