Actually, I think the problem is in your code right now. When I use your code, I hit the problem you’re seeing. But if I step through it line-by-line, it doesn’t seem to happen. I suspect something wacky is happening with type inference.
— John On Jun 12, 2014, at 8:31 AM, Florian Oswald <[email protected]> wrote: > sure - any idea where should I look for this? I pretty much copied this line > > https://github.com/JuliaStats/DataFrames.jl/blob/master/src/deprecated.jl#L34 > > for my collectFields function. > > > > > On 12 June 2014 16:18, John Myles White <[email protected]> wrote: > Certainly seems like a bug. A PR fixing this would be very helpful. > > At some point I’d like to move the functions for converting Dict’s to > DataFrames out of the DataFrames package since there’s so many ways to do it > that it’s hard for me to keep track of them. > > — John > > On Jun 12, 2014, at 8:15 AM, Florian Oswald <[email protected]> wrote: > >> Hi all, >> >> I found some strange behaviour and am trying to find out where I'm going >> wrong. I have a dict that stores several vectors of equal length, and I want >> to make a DataFrame from it, where the columns should have the names of the >> dict keys: >> >> using DataFrames >> >> function collectFields(dict::Dict) >> di_keys = collect(keys(dict)) >> cols = [ dict[k] for k in di_keys ] >> cnames = Array(Symbol,length(dict)) >> for i in 1:length(di_keys) >> cnames[i] = symbol(di_keys[i]) >> end >> return DataFrame(cols, cnames) >> end >> >> di = ["a"=>[1,3],"b"=>[0.0,1.0]] >> collectFields(di) >> >> This works as expected: >> >> collectFields(di) >> 2x2 DataFrame >> |-------|---|-----| >> | Row # | a | b | >> | 1 | 1 | 0.0 | >> | 2 | 3 | 1.0 | >> >> however, changing the type of the vectors in dict: >> >> di2 = ["a"=>[1,3],"b"=>[0,1]] >> >> >> julia> collectFields(di2) >> 2x2 DataFrame >> |-------|-------|----| >> | Row # | x1 | x2 | >> | 1 | [1,3] | a | >> | 2 | [0,1] | b | >> >> >> Any ideas? thanks! >> > >
