Skip to content

Commit 54d2d91

Browse files
committed
Allow atvalue indexing in categorical axes
1 parent 2d2475e commit 54d2d91

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/indexing.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,12 @@ function axisindexes(::Type{Categorical}, ax::AbstractVector, idx)
249249
i == 0 && throw(ArgumentError("index $idx not found"))
250250
i
251251
end
252+
function axisindexes(::Type{Categorical}, ax::AbstractVector, idx::Value)
253+
val = idx.val
254+
i = findfirst(ax, val)
255+
i == 0 && throw(ArgumentError("index $val not found"))
256+
i
257+
end
252258
# Categorical axes may be indexed by a vector of their elements
253259
function axisindexes(::Type{Categorical}, ax::AbstractVector, idx::AbstractVector)
254260
res = findin(ax, idx)

test/categoricalvector.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ A = AxisArray(data[idx,:], AxisArrays.CategoricalVector(v[idx]), [:a, :b])
1313
v = AxisArrays.CategoricalVector(collect([1; 8; 10:15]))
1414
@test AxisArrays.axistrait(axes(A)[1]) <: AxisArrays.Categorical
1515
A = AxisArray(reshape(1:16, 8, 2), v, [:a, :b])
16+
1617
@test A[Axis{:row}(AxisArrays.CategoricalVector([15]))] == AxisArray(reshape(A.data[8, :], 1, 2), AxisArrays.CategoricalVector([15]), [:a, :b])
1718
@test A[Axis{:row}(AxisArrays.CategoricalVector([15])), 1] == AxisArray([A.data[8, 1]], AxisArrays.CategoricalVector([15]))
19+
@test A[atvalue(15), :] == AxisArray(A.data[8, :], [:a, :b])
20+
@test A[atvalue(15), 1] == 8
1821
@test AxisArrays.axistrait(axes(A)[1]) <: AxisArrays.Categorical
1922

2023
# TODO: maybe make this work? Would require removing or modifying Base.getindex(A::AxisArray, idxs::Idx...)

0 commit comments

Comments
 (0)