跳到內容

Table 是一個 chunked arrays 的序列。它們具有與 record batches 相似的介面,但它們可以由多個 record batches 或 chunked arrays 組成。

S3 方法與用法

Table 類似於 data.frame,並且許多您期望在 data.frame 上運作的方法都已為 Table 實作。這包括 [[[$namesdimnrowncolheadtail。您也可以使用 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 是一個 Arrow ArrayChunkedArray,它將在提取之前被強制轉換為 R 向量。

  • $Filter(i, keep_na = TRUE):傳回一個 Table,其列位於邏輯向量或 Arrow boolean 類型 (Chunked)Array iTRUE 的位置。

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