由内而外释放R的力量||摘自《R大数据分析实用指南》

摘者按: 虽然经常在Linux上面处理数据,公司的服务器也不必太操心内存的问题(为公司吹牛的员工,还不快把我招了_)。但是,有时还是为了内存操心,会害怕 out of memory 这样的报错。那么如何来避免这类问题,从而更有效地利用内存呢?

R为什么会慢?

  • 数据必须读入内存
  • R 核心是单线程的
  • R是一种解释语言
使用 ff 和 ffbase 超越内存限制

主要用于大数据的转换聚合与建模:

  • 深入ff and ffbase
  • R语言操作mysql上亿数据量(ff包ffbase包和ETLUtils包)
使用bigmemory 突破内存限制

bigmemory负责创建,存储,访问和操作大量的矩阵。矩阵,默认情况下会分配给共享内存并且可以使用内存映射文件。

biganalytics, synchronicity, bigalgebra, and bigtabulate 这些包提供先进的分析功能。

通过S4可以访问和操作big.matrix(bigmemory包中使用的一种对象),S4这种接口和R中默认的matrix接口非常相似。使用这些包在并行环境中也能提供大量的速度和内存效率。bigmemory还提供了一个C ++框架,用于开发新工具,可以工作在同时操作big.matrix和原生态的R矩阵两种对象。

R的并行

R中两种常用并行方法——1. parallel
R中两种常用并行方法——2. snowfall
R语言多任务处理与并行运算包——foreach

  • 使用更少的线程进行并行;
  • 如果你的电脑内存非常小,有一个简单的方法确定你的最大使用线程:max cores = memory.limit() / memory.size();
  • 将大量的并行分小部分进行;
  • 在代码中多使用rm()删除没用的变量,使用gc()回收内存空间;
使用data.table 快速导入数据和操作

【R语言】必学包之data.table包
R语言学习笔记之——数据处理神器data.table
https://www.machinelearningplus.com/data-manipulation/datatable-in-r-complete-guide/

你可能感兴趣的:(由内而外释放R的力量||摘自《R大数据分析实用指南》)