跳至内容

创建一个新数组或从现有数组创建,修改一个或多个参数。当从其他地方导入数组时,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

要附加到此 arraynanoarrow_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