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 table 拉到 R 中。請參閱範例。
關於 $
方法的注意事項:由於 Table
是一個 R6
物件,因此 $
也用於存取物件的方法(請參閱下方)。方法優先於 table 的欄位。因此,即使 table 中有一個名為 "Slice" 的欄位,tab$Slice
也會傳回 "Slice" 方法函數。
R6 方法
除了更 R 友善的 S3 方法外,Table
物件還具有以下 R6 方法,這些方法對應到底層的 C++ 方法
$column(i)
:從 table 中依整數位置提取ChunkedArray
$ColumnNames()
:取得所有欄位名稱(由names(tab)
呼叫)$nbytes()
:table 元素消耗的總位元組數$RenameColumns(value)
:設定所有欄位名稱(由names(tab) <- value
呼叫)$GetColumnByName(name)
:依字串名稱提取ChunkedArray
$field(i)
:從 table schema 中依整數位置提取Field
$SelectColumns(indices)
:傳回新的Table
,其中包含指定的欄位,以 0 為基底的整數表示。$Slice(offset, length = NULL)
:建立從指示的整數 offset 開始的零複製視圖,並持續給定的 length,如果NULL
(預設值),則到 table 的末尾。$Take(i)
:傳回一個Table
,其列位於由整數i
給定的位置。如果i
是一個 ArrowArray
或ChunkedArray
,它將在提取之前被強制轉換為 R 向量。$Filter(i, keep_na = TRUE)
:傳回一個Table
,其列位於邏輯向量或 Arrow boolean 類型(Chunked)Array
i
為TRUE
的位置。$SortIndices(names, descending = FALSE)
:傳回一個整數列位置的Array
,可用於按第一個命名欄位以升序或降序重新排列Table
,並使用其他命名欄位來打破平局。descending
可以是長度為一的邏輯向量,也可以與names
的長度相同。$serialize(output_stream, ...)
:將 table 寫入給定的 OutputStream$cast(target_schema, safe = TRUE, options = cast_options(safe))
:變更 record batch 的 schema。
還有一些主動綁定
$num_columns
$num_rows
$schema
$metadata
:以具名列表形式傳回Schema
的鍵值 metadata。透過賦值(tab$metadata <- new_metadata
)修改或替換。所有列表元素都會被強制轉換為字串。請參閱schema()
以取得更多資訊。$columns
:傳回ChunkedArray
的列表