codedthinking / Kezdi.jl

An umbrella of Julia packages for data analysis, in loving memory of Gábor Kézdi
Other
9 stars 0 forks source link

bug: `var[1]` does not work if `var` is a list #79

Closed korenmiklos closed 4 days ago

korenmiklos commented 4 days ago

Expected behavior: return the first element of the list

Current behavior: Return the first element of the :var vector, then fail for dimension mismatch

This may be intended behavior for scalar-valued vectors

korenmiklos commented 4 days ago

This may be solved by getindex but it has to be vectorized:

julia> vlist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
3-element Vector{Vector{Int64}}:
 [1, 2, 3]
 [4, 5, 6]
 [7, 8, 9]

julia> getindex.(vlist, 1)
3-element Vector{Int64}:
 1
 4
 7

julia> getindex(vlist, 1)
3-element Vector{Int64}:
 1
 2
 3
korenmiklos commented 4 days ago
julia> df
3×1 DataFrame
 Row │ vlist
     │ Array…
─────┼───────────
   1 │ [1, 2, 3]
   2 │ [4, 5, 6]
   3 │ [7, 8, 9]

julia> @generate df v1 = getindex(vlist, 1)
3×2 DataFrame
 Row │ vlist      v1
     │ Array…     Int64
─────┼──────────────────
   1 │ [1, 2, 3]      1
   2 │ [4, 5, 6]      4
   3 │ [7, 8, 9]      7

julia> @generate df v2 = getindex(vlist, 2)
3×2 DataFrame
 Row │ vlist      v2
     │ Array…     Int64
─────┼──────────────────
   1 │ [1, 2, 3]      2
   2 │ [4, 5, 6]      5
   3 │ [7, 8, 9]      8

julia> @generate df v3 = vlist[3]
3×2 DataFrame
 Row │ vlist      v3
     │ Array…     Int64
─────┼──────────────────
   1 │ [1, 2, 3]      7
   2 │ [4, 5, 6]      8
   3 │ [7, 8, 9]      9