On May 31, 2016 2:54 PM, "Femto Trader" <femto.tra...@gmail.com> wrote: > > Hello, > > I have a type like > > type V > x::Float64 > y::Float64 > z::Float64 > end > > v = V(1.0,2.0,3.0) > > I read on http://docs.julialang.org/en/release-0.4/devdocs/reflection/ > that > fieldnames(v) > returns attributes of v as symbol > > I would like to access to field x using either :x symbol (or "x" string) > > I tried > > get(v, :x)
getfield > > but it raises > ERROR: MethodError: `get` has no method matching get(::V, ::Symbol) > Closest candidates are: > get(::ObjectIdDict, ::ANY, ::ANY) > get{K,V}(::Dict{K,V}, ::Any, ::Any) > get{K}(::WeakKeyDict{K,V}, ::Any, ::Any) > ... > > > Any idea ? > > Kind regard > > > PS: here is the context of such a question https://github.com/JuliaStats/DataFrames.jl/issues/982 > > using DataFrames > a_V = [V(1.0,2.0,3.0), V(4.0,5.0,6.0)] > println(a_V) > df = DataFrame(myvar=a_V) > │ Row │ myvar │ > ├─────┼────────────────┤ > │ 1 │ V(1.0,2.0,3.0) │ > │ 2 │ V(4.0,5.0,6.0) │ > > # I'd prefer to have x, y, z as column > > df2 = DataFrame() > #df2[:x] = map((val)->val.x, a_V) > #df2[:y] = map((val)->val.y, a_V) > #df2[:z] = map((val)->val.z, a_V) > for fieldname in fieldnames(V) > df2[fieldname] = map((val)->val.x, a_V) > end > println(df2) >