使用%in%时R挂断

时间:2016-06-30 02:48:15

标签: r

我在R中使用了2个中等大小的数据集。我想检查一个数据集,如果它的参考编号与其他数据集中的参考编号匹配,如果是,则在第二个数据集中分配一个包含值存在于另一个数据集的列中。

ghi2$state=ifelse(b1$accntnumber %in% ghi2$referencenumber,b1$address,0)

每次我运行此代码时,我的RStudio都会挂起并且很长时间没有响应。是因为它花时间处理命令还是我的命令错了。 我正在使用2GB RAM系统,所以我认为R挂断了。我应该使用==运算符而不是%in%?我会得到相同的结果吗?

1 个答案:

答案 0 :(得分:2)

<强> 1。我应该使用==运算符而不是%in%?

不(!)。见#2。

<强> 2。我会得到相同的结果吗?

没有。订单和位置必须与==匹配。另外,请参阅@ Akrun的评论。

第3。如何加快速度和/或处理RStudio冻结

如果RStudio冻结,您可以保存您的日志文件信息,将其发送给将快速响应的RStudio团队,您也可以将您的日志文件提供给我们以获取帮助。

除此之外,适用一般大数据规则。以下是一些提示:

  1. 尝试data.table
  2. 在命令行而不是RStudio
  3. 上尝试
  4. 观察资源监视器(或用于监视资源的任何内容)并观察内存和CPU使用情况
  5. 如果是RAM问题,你可以

    一个。使用云帐户获取更多内存

    湾买一些RAM(只是说')

    ℃。使用64位R并将R可用的RAM增加到最大值(如果它还不是

  6. 如果是CPU问题,您可以考虑并行化

  7. 如果正在重复这些ID中的任何一个(这在您的特定用例的上下文中是有意义的),您可以使用unique来避免冗余的比较
  8. 在SO上预先存在的大数据Q&amp; A中还有许多其他提示。