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