0
> c<-naiveBayes(f1,traindata)

这里f1用于添加权重。

> pred<-predict(c,traindata)
Error: cannot allocate vector of size 98.7 Mb
4

1 回答 1

1

一般来说,如果您在 R 中遇到内存问题,可以尝试以下几点:

1)垃圾收集。Runninggc()将运行垃圾收集器,它还会告诉您当前正在使用多少内存:

> a<-double(1e6)
> b<-double(1e9)
> gc()
             used   (Mb) gc trigger   (Mb)   max used   (Mb)
Ncells     182079    9.8     407500   21.8     350000   18.7
Vcells 1001277242 7639.2 1104245379 8424.8 1001438032 7640.4

2)摆脱大物体。您可以使用以下命令按大小(以 megs 为单位)获取 10 个最大对象的列表:

> sort(sapply(ls(),function(x) object.size(get(x))),T)[1:10]/1e6
         b          a       <NA>       <NA>       <NA>       <NA>       <NA> 
8000.00004    8.00004         NA         NA         NA         NA         NA 
      <NA>       <NA>       <NA> 
        NA         NA         NA 

在这种情况下,我只有两个对象,因为这是一个新的 R 会话。但这让我可以发现罪魁祸首并在我不再需要它时摆脱它,使用rm

> rm(b)
> gc()
          used (Mb) gc trigger   (Mb)   max used   (Mb)
Ncells  183576  9.9     407500   21.8     350000   18.7
Vcells 1280024  9.8  883396303 6739.8 1001773436 7643.0

3) 如果在清除大对象和垃圾收集之后,您仍然存在内存问题,那么您可能需要研究一个 R 包,它允许您使用内存映射文件处理大型数据集。一些选项是mmapbigmemory

http://cran.r-project.org/web/packages/mmap/index.html

http://cran.r-project.org/web/packages/bigmemory/index.html

于 2013-10-02T16:50:31.020 回答