TypedTables.jl icon indicating copy to clipboard operation
TypedTables.jl copied to clipboard

Docs appear incorrect (or I'm doing something wrong or there's a bug)

Open quinnj opened this issue 6 years ago • 1 comments

The docs say if I map over a Table, then I'll get a Table back (via use of similar), but that doesn't seem to be the case:

julia> map(x->(x=x.id + 1, y=x.salary * 2), tt)
70000-element Array{NamedTuple{(:x, :y),T} where T<:Tuple,1}:
 (x = 2, y = 174433.62)
 (x = 3, y = 114086.76)
 (x = 4, y = 92268.18)
...

Also, I tried the Generator method and that doesn't seem to be working either:

julia> Table((x=row.id + 1, y = row.salary * 2) for row in tt)
ERROR: Cannot construct table from Base.Generator{Table{NamedTuple{(:id, :first, :last, :salary, :wage, :start, :end),Tuple{Int64,String,String,Union{Missing, Float64},Union{Missing, Float64},Union{Missing, Dates.Date},Union{Missing, Dates.DateTime}}},1,NamedTuple{(:id, :first, :last, :salary, :wage, :start, :end),Tuple{CSV.Column{Int64,Int64},CSV.Column{String,PooledString},CSV.Column{String,PooledString},CSV.Column{Union{Missing, Float64},Union{Missing, Float64}},CSV.Column{Union{Missing, Float64},Union{Missing, Float64}},CSV.Column{Union{Missing, Dates.Date},Union{Missing, Dates.Date}},CSV.Column{Union{Missing, Dates.DateTime},Union{Missing, Dates.DateTime}}}}},getfield(Main, Symbol("##64#65"))}
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] _columns at /Users/jacobquinn/.julia/packages/TypedTables/ZF2b3/src/Table.jl:45 [inlined]
 [3] #Table#17(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Type{Table}, ::Base.Generator{Table{NamedTuple{(:id, :first, :last, :salary, :wage, :start, :end),Tuple{Int64,String,String,Union{Missing, Float64},Union{Missing, Float64},Union{Missing, Dates.Date},Union{Missing, Dates.DateTime}}},1,NamedTuple{(:id, :first, :last, :salary, :wage, :start, :end),Tuple{CSV.Column{Int64,Int64},CSV.Column{String,PooledString},CSV.Column{String,PooledString},CSV.Column{Union{Missing, Float64},Union{Missing, Float64}},CSV.Column{Union{Missing, Float64},Union{Missing, Float64}},CSV.Column{Union{Missing, Dates.Date},Union{Missing, Dates.Date}},CSV.Column{Union{Missing, Dates.DateTime},Union{Missing, Dates.DateTime}}}}},getfield(Main, Symbol("##64#65"))}) at /Users/jacobquinn/.julia/packages/TypedTables/ZF2b3/src/Table.jl:24
 [4] Table(::Base.Generator{Table{NamedTuple{(:id, :first, :last, :salary, :wage, :start, :end),Tuple{Int64,String,String,Union{Missing, Float64},Union{Missing, Float64},Union{Missing, Dates.Date},Union{Missing, Dates.DateTime}}},1,NamedTuple{(:id, :first, :last, :salary, :wage, :start, :end),Tuple{CSV.Column{Int64,Int64},CSV.Column{String,PooledString},CSV.Column{String,PooledString},CSV.Column{Union{Missing, Float64},Union{Missing, Float64}},CSV.Column{Union{Missing, Float64},Union{Missing, Float64}},CSV.Column{Union{Missing, Dates.Date},Union{Missing, Dates.Date}},CSV.Column{Union{Missing, Dates.DateTime},Union{Missing, Dates.DateTime}}}}},getfield(Main, Symbol("##64#65"))}) at /Users/jacobquinn/.julia/packages/TypedTables/ZF2b3/src/Table.jl:24
 [5] top-level scope at REPL[25]:1

quinnj avatar Jun 24 '19 23:06 quinnj

Thanks, Jacob. I’ll look into it when I can (currently on vacation). From memory I think similar works but maybe not collect. The Generator thing might have relied on older Tables.jl functionality (you did raise an issue I think about some changes there?).

andyferris avatar Jun 25 '19 12:06 andyferris