跳到内容

Table 是 chunked arrays 的序列。它们与 record batches 有相似的接口,但它们可以由多个 record batches 或 chunked arrays 组成。

S3 方法和用法

Table 类似于 data.frame,并且许多您期望在 data.frame 上工作的方法都已为 Table 实现。 这包括 [, [[, $, names, dim, nrow, ncol, head, 和 tail。 您还可以使用 as.data.frame() 将数据从 Arrow 表拉入 R。 请参阅示例。

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

R6 方法

除了更友好的 R S3 方法之外,Table 对象还具有以下 R6 方法,这些方法映射到底层的 C++ 方法

  • $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)): 更改 record batch 的模式。

还有一些 active bindings

  • $num_columns

  • $num_rows

  • $schema

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

  • $columns: 返回一个 ChunkedArrays 列表