Bigmemory 项目

R 的可扩展数据处理

Michael Kane

Assistant Professor, Yale University

bigmemory

bigmemory 用于存储、操作和处理可能大于计算机内存的超大矩阵

R 的可扩展数据处理

big.matrix

  • 创建
  • 读取
  • 子集
  • 汇总
R 的可扩展数据处理

"out-of-core" 是什么?

  • R 对象保存在内存中

  • 当内存不足时

    • 数据被移到磁盘
    • 程序继续运行(很慢)或崩溃

仅在需要处理时再把数据加载到内存更好。

R 的可扩展数据处理

何时使用 big.matrix?

  • RAM 的 20%
  • 稠密矩阵
R 的可扩展数据处理

bigmemory 概览

  • bigmemory 实现了 big.matrix 数据类型,用于在磁盘上创建、存储、访问和操作矩阵

  • 数据保存在磁盘上,并按需隐式载入内存

R 的可扩展数据处理

bigmemory 概览

一个 big.matrix 对象:

  • 只需导入一次
  • "backing" 文件
  • "descriptor" 文件
R 的可扩展数据处理

bigmemory 示例

library(bigmemory)

# Create a new big.matrix object x <- big.matrix(nrow = 1, ncol = 3, type = "double", init = 0, backingfile = "hello_big_matrix.bin", descriptorfile = "hello_big_matrix.desc")
R 的可扩展数据处理

backing 与 descriptor 文件

  • backing 文件:磁盘上的矩阵二进制表示
  • descriptor 文件:保存元数据,如行数、列数、名称等
R 的可扩展数据处理

bigmemory 示例

# See what's in it
 x[,]
  0    0    0
x
An object of class "big.matrix"
Slot "address":
<pointer: 0x108e2a9a0>
R 的可扩展数据处理

与矩阵的相似之处

# Change the value in the first row and column
x[1, 1] <- 3
# Verify the change has been made
x[,]
   3    0    0
R 的可扩展数据处理

Ayo berlatih!

R 的可扩展数据处理

Preparing Video For Download...