Array
是一个不可变的数据数组,具有某种逻辑类型和长度。大多数逻辑类型都包含在基本 Array
类中;还有一些子类,例如 DictionaryArray
、ListArray
和 StructArray
。
工厂
Array$create()
工厂方法实例化 Array
并接受以下参数
x
: R 向量、列表或data.frame
type
:x
的可选 数据类型。如果省略,则类型将从数据推断得出。
Array$create()
将返回 Array
的适当子类,例如,当给定 R 因子时,将返回 DictionaryArray
。
要直接组成 DictionaryArray
,请调用 DictionaryArray$create()
,它接受两个参数
x
: 用于字典索引的 R 向量或Array
整数dict
: 字典值的 R 向量或Array
(如 R 因子级别,但不仅限于字符串)
方法
$IsNull(i)
: 如果索引处的值为 null,则返回 true。不进行边界检查$IsValid(i)
: 如果索引处的值为有效,则返回 true。不进行边界检查$length()
: 此数组包含的元素数量$nbytes()
: 数组元素所占用的总字节数$offset
: 另一个数组数据的相对位置,用于启用零拷贝切片$null_count
: 数组中 null 条目的数量$type
: 数据的逻辑类型$type_id()
: 类型 ID$Equals(other)
: 此数组是否等于other
$ApproxEquals(other)
:$Diff(other)
: 返回一个字符串,表示两个数组之间的差异$data()
: 返回底层 ArrayData$as_vector()
: 转换为 R 向量$ToString()
: 数组的字符串表示形式$Slice(offset, length = NULL)
: 使用指示的偏移量和长度构造数组的零拷贝切片。如果长度为NULL
,则切片将一直到数组的末尾。$Take(i)
: 返回一个Array
,其中包含由整数 (R 向量或 Array 数组)i
给出的位置的值。$Filter(i, keep_na = TRUE)
: 返回一个Array
,其中包含逻辑向量(或 Arrow 布尔值数组)i
为TRUE
的位置的值。$SortIndices(descending = FALSE)
: 返回一个Array
,其中包含可以用于按升序或降序重新排列Array
的整数位置$RangeEquals(other, start_idx, end_idx, other_start_idx)
:$cast(target_type, safe = TRUE, options = cast_options(safe))
: 更改数组中的数据以更改其类型。$View(type)
: 使用给定类型构造此数组的零拷贝视图。$Validate()
: 执行任何验证检查,以确定数组内部数据中明显的矛盾。这可能是一个昂贵的检查,可能为O(length)
示例
my_array <- Array$create(1:10)
my_array$type
#> Int32
#> int32
my_array$cast(int8())
#> Array
#> <int8>
#> [
#> 1,
#> 2,
#> 3,
#> 4,
#> 5,
#> 6,
#> 7,
#> 8,
#> 9,
#> 10
#> ]
# Check if value is null; zero-indexed
na_array <- Array$create(c(1:5, NA))
na_array$IsNull(0)
#> [1] FALSE
na_array$IsNull(5)
#> [1] TRUE
na_array$IsValid(5)
#> [1] FALSE
na_array$null_count
#> [1] 1
# zero-copy slicing; the offset of the new Array will be the same as the index passed to $Slice
new_array <- na_array$Slice(5)
new_array$offset
#> [1] 5
# Compare 2 arrays
na_array2 <- na_array
na_array2 == na_array # element-wise comparison
#> Array
#> <bool>
#> [
#> true,
#> true,
#> true,
#> true,
#> true,
#> null
#> ]
na_array2$Equals(na_array) # overall comparison
#> [1] TRUE