跳转至内容

记录批次是一个包含等长数组的集合,这些数组匹配特定的 Schema。它是一个类似表格的数据结构,在语义上是一系列的 字段,每个字段都是一个连续的 Arrow 数组

S3 方法和用法

记录批次类似于数据框,许多你期望在 data.frame 上使用的函数都在 RecordBatch 中实现。这包括 [[[$namesdimnrowncolheadtail。你还可以使用 as.data.frame() 将 Arrow 记录批次中的数据提取到 R 中。请参阅示例。

关于 $ 方法的一个警告:由于 RecordBatch 是一个 R6 对象,所以 $ 也用于访问对象的函数(参见下文)。函数优先于表格的列。因此,batch$Slice 会返回 "Slice" 函数,即使表格中存在名为 "Slice" 的列。

R6 函数

除了更 R 友好的 S3 函数外,RecordBatch 对象还具有以下映射到底层 C++ 函数的 R6 函数

  • $Equals(other): 如果 other 记录批次相等,则返回 TRUE

  • $column(i): 从批次中通过整数位置提取一个 Array

  • $column_name(i): 通过整数位置获取列的名称

  • $names(): 获取所有列名(由 names(batch) 调用)

  • $nbytes(): 记录批次元素占用的总字节数

  • $RenameColumns(value): 设置所有列名(由 names(batch) <- value 调用)

  • $GetColumnByName(name): 通过字符串名称提取一个 Array

  • $RemoveColumn(i): 通过整数位置从批次中删除一列

  • $SelectColumns(indices): 返回一个新的记录批次,其中包含一组选定的列,表示为从 0 开始的整数。

  • $Slice(offset, length = NULL): 创建一个从指定整数偏移量开始的零拷贝视图,并持续到给定的长度,或者如果为 NULL(默认值)则持续到表格的末尾。

  • $Take(i): 返回一个 RecordBatch,其中包含由整数(R 向量或数组数组)i 给出的位置处的行。

  • $Filter(i, keep_na = TRUE): 返回一个 RecordBatch,其中包含逻辑向量(或 Arrow 布尔数组)iTRUE 的位置处的行。

  • $SortIndices(names, descending = FALSE): 返回一个整数行位置的 Array,它可以用于按第一个命名列的升序或降序重新排列 RecordBatch,并通过进一步的命名列来打破平局。descending 可以是一个长度为一的逻辑向量,也可以是一个与 names 长度相同的逻辑向量。

  • $serialize(): 返回一个适合进程间通信的原始向量

  • $cast(target_schema, safe = TRUE, options = cast_options(safe)): 更改记录批次的模式。

还有一些活动绑定

  • $num_columns

  • $num_rows

  • $schema

  • $metadata: 返回 Schema 的键值元数据,表示为一个命名列表。可以通过赋值来修改或替换(batch$metadata <- new_metadata)。所有列表元素都被强制转换为字符串。有关更多信息,请参见 schema()

  • $columns: 返回一个 Array 列表