DataFramesMeta questions

I use @aside all the time. Its a fantastic tool.
Sorry, that code was a bad illustration of the point.

Iā€™m just saying, imagine if things chained automatically without writing the @chain macro

One feature I would like to see is a @chain macro which operates in global scope. Something like

@chain df @global begin 
    ...
end

this would make it easier to debug. This would be a relatively simple PR.

So writing X = _ within the chain, would be like writing global X = _
That would be really good.

would it be possible to allow more flexibility in @rtransfrom ?
Allow statements like

               :x += 1

or

              :y, :z   = :x , :x

Probably not at the moment. Itā€™s hard to map that to a src => fun => dest expression in DataFrames that gets sent to transform.

:x => x->x+1 => :x and :x => identity => :y, x:=>identity => :z ?

Yeah. Thatā€™s feasible.

I just mean that it would take some work to special-case those exact syntaxes (and open the door to new ones). Please make a PR if interested!

@chain begin
    DataFrame(  A=1,   B=2  )
    @rtransform  :X = (; :A , :B)  
end

Produces
:X = (##1262 = 1, ##1263 = 2)

But Iā€™d like the column names to become the tuple names
:X = (A=1, B=2)

Is this possible?

Did you try :x = (a=:a, b=:b)?

That works but I have 20 columns. I donā€™t want to list them all twice

Perhaps write a function that generates the needed code and

@rtransform :x = $(tupelifycols(df))

This function already exists: itā€™s Tables.rowtable.

2 Likes

Many thanks:)

Yes, this is known, and comes from the way DataFramesMetaā€™s function creation works. Can you please file an issue so I can keep track of it?

That works but I have 20 columns. I donā€™t want to list them all twice

Maybe the new @astable macro-flag can help here? Maybe not, though, if you want :x to be a vector of named tuples.

Created.

https://github.com/JuliaData/DataFramesMeta.jl/issues/306

1 Like