@@ -104,8 +104,11 @@ function Base.lastindex(c::ChainDataFrame, i::Integer)
104104 end
105105end
106106
107- function Base. convert (:: Type{Array} , c:: C ) where C <: ChainDataFrame
107+ function Base. convert (:: Type{Array} , c:: ChainDataFrame )
108108 T = promote_eltype_namedtuple_tail (c. nt)
109+ return convert (Array{T}, c)
110+ end
111+ function Base. convert (:: Type{Array{T}} , c:: ChainDataFrame ) where {T}
109112 arr = Array {T, 2} (undef, c. nrows, c. ncols - 1 )
110113
111114 for (i, k) in enumerate (Iterators. drop (keys (c. nt), 1 ))
@@ -115,9 +118,13 @@ function Base.convert(::Type{Array}, c::C) where C<:ChainDataFrame
115118 return arr
116119end
117120
118- function Base. convert (:: Type{Array} , cs:: Array{ChainDataFrame{T},1} ) where T<: NamedTuple
121+ function Base. convert (:: Type{Array} , cs:: Vector{ChainDataFrame{NamedTuple{K,V}}} ) where {K,V}
122+ T = promote_eltype_tuple_type (Base. tuple_type_tail (V))
123+ return convert (Array{T}, cs)
124+ end
125+ function Base. convert (:: Type{Array{T}} , cs:: Vector{<:ChainDataFrame} ) where {T}
119126 return mapreduce ((x, y) -> cat (x, y; dims = Val (3 )), cs) do c
120- reshape (convert (Array, c), Val (3 ))
127+ reshape (convert (Array{T} , c), Val (3 ))
121128 end
122129end
123130
0 commit comments