跳转至内容

表是由一系列分块数组组成的。它们与记录批次具有类似的接口,但它们可以由多个记录批次或分块数组组成。

S3 方法和用法

表类似于数据框,许多您期望在 data.frame 上工作的方法都已为 Table 实现。这包括 [[[$namesdimnrowncolheadtail。您还可以使用 as.data.frame() 将 Arrow 表中的数据提取到 R 中。请参阅示例。

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

R6 方法

除了更易于 R 使用的 S3 方法外,Table 对象还具有以下映射到底层 C++ 方法的 R6 方法

  • $column(i):按整数位置从表中提取 ChunkedArray

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

  • $nbytes():表元素消耗的总字节数

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

  • $GetColumnByName(name):按字符串名称提取 ChunkedArray

  • $field(i):按整数位置从表架构中提取 Field

  • $SelectColumns(indices):返回具有指定列的新 Table,表示为从 0 开始的整数。

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

  • $Take(i):返回一个 Table,其中包含由整数 i 指定位置的行。如果 i 是 Arrow ArrayChunkedArray,它将在获取之前被强制转换为 R 向量。

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

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

  • $serialize(output_stream, ...):将表写入给定的 OutputStream

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

还有一些活动绑定

  • $num_columns(列数)

  • $num_rows(行数)

  • $schema(架构)

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

  • $columns:返回 ChunkedArray 列表