我有一个矩阵,其中包含两列非常长的列,其中包含数千行数字和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包)导入我的文件并转换为数据框。感谢。