跳至内容

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

S3 方法和用法

表格类似于数据帧,并且许多您期望在 data.frame 上使用的函数都针对 Table 进行了实现。这包括 [[[$namesdimnrowncolheadtail。您还可以使用 as.data.frame() 将 Arrow 表格中的数据提取到 R 中。请参阅示例。

关于 $ 方法的一个注意事项:因为 Table 是一个 R6 对象,所以 $ 也用于访问对象的函数(见下文)。函数优先于表格的列。因此,tab$Slice 将返回 "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 指定的位置的 rows。如果 i 是一个 Arrow ArrayChunkedArray,它将在取值之前被强制转换为 R 向量。

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

  • $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 列表