记录批次是等长数组的集合,这些数组匹配特定的Schema(模式)。它是一个类似表格的数据结构,语义上是一系列字段(Field),每个字段都是连续的 Arrow 数组(Array)。
S3 方法和用法
记录批次类似于数据框,许多您期望在 data.frame
上运行的方法都已针对 RecordBatch
实现。这包括 [
、[[
、$
、names
、dim
、nrow
、ncol
、head
和 tail
。您还可以使用 as.data.frame()
将 Arrow 记录批次中的数据提取到 R 中。请参阅示例。
关于 $
方法的警告:由于 RecordBatch
是一个 R6
对象,$
也用于访问对象的 方法(见下文)。方法优先于表的列。因此,即使表中存在名为“Slice”的列,batch$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 向量或 Array 数组)i
指定位置的行。$Filter(i, keep_na = TRUE)
:返回一个RecordBatch
,其中包含逻辑向量(或 Arrow 布尔数组)i
为TRUE
的位置的行。$SortIndices(names, descending = FALSE)
:返回一个整数行位置的Array
,可用于按第一个命名列以升序或降序重新排列RecordBatch
,并使用其他命名列打破平局。descending
可以是长度为 1 的逻辑向量,也可以是与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
列表