建立新陣列或從現有陣列建立,修改一個或多個參數。從其他地方匯入陣列時,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