这个实验性的 vctr 类允许一个或多个 Arrow 数组作为 R 向量呈现,而无需转换它们。这对于没有无损 R 等效类型的数组很有用,并有助于提供一个中间对象类型,当默认转换成本过高时(例如,数据帧的嵌套列表)。这些对象不会在许多 vctr 转换中幸存下来;但是,它们可以在不复制底层数组的情况下进行切片。
参数
- x
与
as_nanoarrow_array_stream()一起使用的对象。- ...
- schema
可选的
schema- 子类
一个可选的 nanoarrow_vctr 子类,用于添加到最终类名之前。
详情
nanoarrow_vctr 目前的实现方式类似于 factor():它的存储类型是一个 integer(),它是 vctr 总长度上的一个序列,并且有一些属性需要将这些索引解析为数组 + 偏移量。在 R 的最新版本中,序列通常具有非常紧凑的表示形式,因此即使对于大型数组,它的存储占用也很小。这些属性目前是
schema:每个块共享的 nanoarrow_schema。chunks:一个nanoarrow_array的list()。offsets:一个integer()向量,以0开头,后跟每个块的累积长度。这允许以log(n)的复杂度从逻辑索引解析块索引 + 偏移量。
此实现是初步的,可能会更改;但是,as_nanoarrow_array_stream(some_vctr[begin:end]) 的结果应该保持稳定。
示例
array <- as_nanoarrow_array(1:5)
as_nanoarrow_vctr(array)
#> <nanoarrow_vctr int32[5]>
#> [1] 1 2 3 4 5