由内而外释放R的力量||摘自《R大数据分析实用指南》
2019-12-24 本文已影响0人
周运来就是我
摘者按: 虽然经常在Linux上面处理数据,公司的服务器也不必太操心内存的问题(为公司吹牛的员工,还不快把我招了_)。但是,有时还是为了内存操心,会害怕 out of memory 这样的报错。那么如何来避免这类问题,从而更有效地利用内存呢?
R为什么会慢?
- 数据必须读入内存
- R 核心是单线程的
- R是一种解释语言
使用 ff 和 ffbase 超越内存限制
主要用于大数据的转换聚合与建模:
使用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/