將 array
轉換為 to
指定的類型。這是一個底層介面;大多數使用者應使用 as.data.frame()
或 as.vector()
,除非需要更精細地控制轉換。此函式是一個 S3 泛型函數,基於 to
進行分派:開發人員可以為自訂向量類型實作自己的 S3 方法。
參數
- array
一個 nanoarrow_array。
- to
一個目標原型物件,描述
array
應轉換成的類型,或NULL
以使用infer_nanoarrow_ptype()
傳回的預設轉換。或者,可以傳遞一個函式,以執行預設 ptype 的替代計算,作為array
和原型預設推斷的函式。- ...
傳遞給 S3 方法
詳細資訊
請注意,未註冊的擴充類型預設會發出警告。使用 options(nanoarrow.warn_unregistered_extension = FALSE)
以停用此行為。
以下 R 向量類型已實作轉換
logical()
:除了 bool 類型外,任何數值類型都可以轉換為logical()
。對於數值類型,任何非零值都被視為TRUE
。integer()
:任何數值類型都可以轉換為integer()
;但是,如果任何值超出 32 位元整數的範圍,將會發出警告。double()
:任何數值類型都可以轉換為double()
。此轉換目前不會針對可能無法通過浮點 double 來回傳輸的值發出警告(例如,非常大的 uint64 和 int64 值)。character()
:字串和大型字串類型可以轉換為character()
。轉換不會檢查有效的 UTF-8:如果您需要更精細地控制編碼,請使用to = blob::blob()
。factor()
:字串的字典編碼陣列可以轉換為factor()
;但是,這必須明確指定(即convert_array(array, factor())
),因為以區塊形式到達的陣列可能具有包含不同層級的字典。使用convert_array(array, factor(levels = c(...)))
將陣列具體化為具有已知層級的向量。Date:只有 date32 類型可以轉換為 R Date 向量。
hms::hms()
:Time32 和 time64 類型可以轉換為hms::hms()
。difftime()
:Time32、time64 和 duration 類型可以轉換為 Rdifftime()
向量。該值會轉換以符合to
的units()
屬性。blob::blob()
:字串、大型字串、二進制和大型二進制類型可以轉換為blob::blob()
。vctrs::list_of()
:List、大型 list 和固定大小 list 類型可以轉換為vctrs::list_of()
。data.frame()
:Struct 類型可以轉換為data.frame()
。vctrs::unspecified()
:任何類型都可以轉換為vctrs::unspecified()
;但是,如果遇到任何非空值,將會發出警告。
除了上述轉換之外,空值陣列可以轉換為除 data.frame()
之外的任何目標原型。擴充陣列目前會轉換為其儲存類型。
範例
array <- as_nanoarrow_array(data.frame(x = 1:5))
str(convert_array(array))
#> 'data.frame': 5 obs. of 1 variable:
#> $ x: int 1 2 3 4 5
str(convert_array(array, to = data.frame(x = double())))
#> 'data.frame': 5 obs. of 1 variable:
#> $ x: num 1 2 3 4 5