跳到內容

建立新陣列或從現有陣列建立,修改一個或多個參數。從其他地方匯入陣列時,nanoarrow_array_set_schema() 可用於將資料類型資訊附加到陣列(若沒有此資訊,nanoarrow 幾乎無法對陣列執行任何操作,因為其內容無法以其他方式解讀)。nanoarrow_array_modify() 可以建立淺層副本並修改各種參數以建立新陣列,包括遞迴設定子項和緩衝區。這些函數為 $<- 運算子提供支援,該運算子可以一次修改一個參數。

用法

nanoarrow_array_init(schema)

nanoarrow_array_set_schema(array, schema, validate = TRUE)

nanoarrow_array_modify(array, new_values, validate = TRUE)

參數

schema

要附加到此陣列的 nanoarrow_schema

array

一個 nanoarrow_array

validate

使用 FALSE 跳過驗證。跳過驗證可能會導致建立會使 R 崩潰的陣列。

new_values

要替換的值的具名 list()

  • nanoarrow_array_init() 傳回可能無效但已使用給定 schema 初始化的陣列。

  • nanoarrow_array_set_schema() 以不可見方式傳回 array。請注意,array 會透過參照就地修改。

  • nanoarrow_array_modify() 傳回 array 的淺層副本,其中包含修改後的參數,以便原始陣列保持有效。

範例

nanoarrow_array_init(na_string())
#> <nanoarrow_array string[0]>
#>  $ length    : int 0
#>  $ null_count: int 0
#>  $ offset    : int 0
#>  $ buffers   :List of 3
#>   ..$ :<nanoarrow_buffer validity<bool>[null] ``
#>   ..$ :<nanoarrow_buffer data_offset<int32>[null] ``
#>   ..$ :<nanoarrow_buffer data<string>[null] ``
#>  $ dictionary: NULL
#>  $ children  : list()

# Modify an array using $ and <-
array <- as_nanoarrow_array(1:5)
array$length <- 4
as.vector(array)
#> [1] 1 2 3 4

# Modify potentially more than one component at a time
array <- as_nanoarrow_array(1:5)
as.vector(nanoarrow_array_modify(array, list(length = 4)))
#> [1] 1 2 3 4

# Attach a schema to an array
array <- as_nanoarrow_array(-1L)
nanoarrow_array_set_schema(array, na_uint32())
as.vector(array)
#> [1] 4294967295