这是my earlier question的后续内容,关于如何在两个文本文件之间找到比较特定属性的方法。
多亏了我接受的答案,下面的代码可以在较小的数据集上运行(在我的系统上):
library(tidyverse, data.table)
con1 <- file("file1.csv", open = "r")
con2 <- file("file2.csv", open = "r")
file1 <- select(read.csv(con1, sep = "|", fill = F, colClasses = "character"),
PROFILE.ID, USERID)
setDT(file1)
file2 <- select(read.csv(con2, sep = "|", fill = F, colClasses = "character"),
PROFILE.ID, USERID)
setDT(file2)
full_join(file1, file2, by = "USERID") %>%
filter(is.na(PROFILE.ID.x) | is.na(PROFILE.ID.y) |
PROFILE.ID.x != PROFILE.ID.y)
close(con1)
close(con2)
问题:当R开始处理full_join函数时,它最终会因错误cannot allocate vector of size 557.6 Mb
而停止。
环境:这是Windows 10操作系统上的64位R v.3.6.2,memory.limit()返回16222。我没有在R中加载任何其他对象,除了上面的代码加载的对象。
可能的原因:问题可能出在两个CSV文件大约有12万行和83列。
到目前为止我已经尝试过但未解决问题的内容:
无论我尝试了什么,该错误始终指的是“ 557.6 Mb”。由于这是公司的笔记本电脑,目前我无法在此计算机上添加更多RAM。
问题:有没有一种方法可以分块加载文件或以其他方式(在重写代码中)来解决错误?
这是我的2美分:尝试'bigmemory'。