You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
wrapdims(table, value, names...; default=undef, sort=false, force=false)
Construct KeyedArray(NamedDimsArray(A,names),keys) from a table matching
the Tables.jl API.
(It must support both Tables.columns and Tables.rows.)
The contents of the array is taken from the column value::Symbol of the table.
Each symbol in names specifies a column whose unique entries
become the keys along a dimenension of the array.
It works with the most basic column-table:
julia> wrapdims((a=[1, 2], b=[2, 1]), :a, :b)
1-dimensional KeyedArray(NamedDimsArray(...)) with keys:
↓ b ∈ 2-element Vector{Int64}
And data, 2-element Vector{Int64}:
(2) 1
(1) 2
but not with a rowtable - an exception gets thrown:
That's unfortunate, I guess it's an argument for not using the same function to construct from an array and from a Table. We did not think of this problem when adding the feature, in #21, although we did think that wrapdims is a weird function that should perhaps be re-organised.
The short-term hack is of course to call the inner function yourself:
julia> AxisKeys._wrap_table(KeyedArray, identity, [(a=1, b=2.2), (a=10, b=22.0)], :a, :b)
1-dimensional KeyedArray(NamedDimsArray(...)) with keys:↓ b ∈2-element Vector{Float64}
And data, 2-element Vector{Int64}:
(2.2) 1
(22.0) 10
julia>wrapdims([(a=1, b=2.2), (a=10, b=22.0)], :c)
2-element NamedDimsArray(::Vector{NamedTuple{(:a, :b), Tuple{Int64, Float64}}}, (:c,)):↓ c (a =1, b =2.2)
(a =10, b =22.0)
Docs for
wrapdims
sayIt works with the most basic column-table:
but not with a rowtable - an exception gets thrown:
Looks like a wrong method gets dispatched: https://github.com/mcabbott/AxisKeys.jl/blob/master/src/wrap.jl#L87 instead of https://github.com/mcabbott/AxisKeys.jl/blob/master/src/tables.jl#L213.
The text was updated successfully, but these errors were encountered: