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
是 ArrowArray
或ChunkedArray
,它将在获取之前强制转换为 R 向量。$Filter(i, keep_na = TRUE)
: 返回一个Table
,其行位于逻辑向量或 Arrow 布尔类型(Chunked)Array
i
为TRUE
的位置。$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
: 返回一个ChunkedArray
s 列表