运行傅里叶变换时,“无法在R中分配矢量大小n mb”

时间:2013-09-16 14:47:54

标签: r

我有一个CSV文件。它的大小是300MB。我想使用此命令对每列进行FFT:

 apply(df,2,function(x){fft(x[!is.na(x)])})

但是我收到了这个错误:

Error: cannot allocate vector of size 293.0 Mb
In addition: Warning messages:
1: In as.matrix.data.frame(X) :
  Reached total allocation of 1535Mb: see help(memory.size)
2: In unlist(X, recursive = FALSE, use.names = FALSE) :
  Reached total allocation of 1535Mb: see help(memory.size)
3: In unlist(X, recursive = FALSE, use.names = FALSE) :
  Reached total allocation of 1535Mb: see help(memory.size)
4: In aperm.default(X, c(s.call, s.ans)) :
  Reached total allocation of 1535Mb: see help(memory.size)
5: In aperm.default(X, c(s.call, s.ans)) :
  Reached total allocation of 1535Mb: see help(memory.size)
6: In aperm.default(X, c(s.call, s.ans)) :
  Reached total allocation of 1535Mb: see help(memory.size)
7: In aperm.default(X, c(s.call, s.ans)) :
  Reached total allocation of 1535Mb: see help(memory.size)

我正在使用Windows 7-32位,如果我运行此命令memory.limit(),结果是3000

如何解决我的问题?我买不到更多内存;)

1 个答案:

答案 0 :(得分:0)

您的记忆不需要仅适合新分配的向量,也不需要适合R会话中的所有其他内容。这就是为什么即使您的限制看起来没问题也会出现错误。

我建议使用for()循环代替apply()。这可能不那么优雅,但内存效率更高,因为你在内存中一次只有一列