有效地打印或存储R中大列之间的差异

时间:2016-09-14 15:31:41

标签: r memory large-data

我有一个矩阵,其中包含两列非常长的列,其中包含数千行数字和NA(actual file is located here)。我想从第1列中减去(算术差异,而不是删除)第2列中的每个值,得到绝对差值,然后在满足条件时存储它。

我写了一个函数并在几个值上测试它;它有效:

a <- c(2, 4, 6)
b <- c(2, 3, 5)
c <- lapply(a, function(x)x-b)
c <- as.numeric(unlist(c))
d <- abs(c)
d <- as.data.frame(d[(d > 2) & (d < 5)])

但是当我使用

将实际列提供给函数时
A1 <- lapply(test$Col1, function(x)x-test$Col2)

我收到了典型的Error: cannot allocate vector of size....消息。

所以,我的问题是:有没有一种有效的方法来做我想做的事情?我很感激任何关于改进我的功能(主要是步骤3)的指针,无需太多内存即可进行计算。或者如果你知道另一种方法可以完成,请建议。

我在Win7 64位上使用最新的R,R Studio和16 GB RAM。我使用fread(data.table包)导入我的文件并转换为数据框。感谢。

0 个答案:

没有答案