跳到內容

array 轉換為 to 指定的類型。這是一個底層介面;大多數使用者應使用 as.data.frame()as.vector(),除非需要更精細地控制轉換。此函式是一個 S3 泛型函數,基於 to 進行分派:開發人員可以為自訂向量類型實作自己的 S3 方法。

用法

convert_array(array, to = NULL, ...)

參數

array

一個 nanoarrow_array

to

一個目標原型物件,描述 array 應轉換成的類型,或 NULL 以使用 infer_nanoarrow_ptype() 傳回的預設轉換。或者,可以傳遞一個函式,以執行預設 ptype 的替代計算,作為 array 和原型預設推斷的函式。

...

傳遞給 S3 方法

類型為 to 的 R 向量。

詳細資訊

請注意,未註冊的擴充類型預設會發出警告。使用 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 類型可以轉換為 R difftime() 向量。該值會轉換以符合 tounits() 屬性。

  • 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