如何在Julia中定义空的IndexedTables?

如何在Julia中定义空的IndexedTables?,julia,Julia,我无法定义空的IndexedTables,例如 using IndexedTables, IndexedTables.Table t = Table(Columns(a=Int64[],b=String[]),Int64[]) t[1,"a"] = 1 t[1,"b"] = 2 t[1,"c"] = t[1,"a"] + t[1,"b"] BoundsError: attempt to access 0-element Array{Int64,1} at index [0] 我知道用已有的数据

我无法定义空的IndexedTables,例如

using IndexedTables, IndexedTables.Table
t = Table(Columns(a=Int64[],b=String[]),Int64[])
t[1,"a"] = 1
t[1,"b"] = 2
t[1,"c"] = t[1,"a"] + t[1,"b"]
BoundsError: attempt to access 0-element Array{Int64,1} at index [0]
我知道用已有的数据创建IndexedTable比创建一个空表然后插入值更有效,但有时您不得不这样做

这是虫子吗?如果是,是否有可能的解决办法


(我已经在上发布了这个帖子,但到目前为止我还没有收到回复)

这可能是IndexedTables中的一个bug

插入IndexedTable需要重新编制索引才能访问数据。使用
flush完成重新索引

但是
flush!(t) 
在问题示例中失败,且
t
为空

正在修复
刷新哪个调用
\u merge可通过以下方式完成:

julia> function IndexedTables._merge!(dst::IndexedTable, src::IndexedTable, f)
    if length(dst.index)==0 || isless(dst.index[end], src.index[1])
        append!(dst.index, src.index)
        append!(dst.data, src.data)
    else
        # merge to a new copy
        new = _merge(dst, src, f)
        ln = length(new)
        # resize and copy data into dst
        resize!(dst.index, ln)
        copy!(dst.index, new.index)
        resize!(dst.data, ln)
        copy!(dst.data, new.data)
    end
    return dst
end

julia> t[1,"c"] = t[1,"a"] + t[1,"b"]
3
更改是在第一个
中添加
长度(…)
检查,如果


当然,拉取请求/问题应该使用IndexedTables.jl打开。安东内洛,你会这么做吗?(或者我应该)

谢谢Dan Getz,我让您发出pull请求,作为找到问题根源的请求:-)好的。打开PRJust以注意已合并。