In DataFrames proper I can do something like
df = DataFrame(point = [(1, 2), (2, 3), (3, 4)])
transform!(df, :point => [:x, :y])
transform!(df, [:x, :y] => ByRow((x, y) -> expensive_computation(x, y)) => [:res1, :res2])
which automatically expands the returned iterable onto two new columns. As far as I can see, this would map to
df = DataFrame(point = [(1, 2), (2, 3), (3, 4)])
@rtransform!(df, [:x, :y]=:point)
@rtransform!(df, [:res1, :res2]=expensive_computation(:x,:y))
in DataFramesMeta, however, this does not seem to be currently possible.
It is possible to fuse these operations with @astable:
df = DataFrame(point = [(1, 2), (2, 3), (3, 4)])
@rtransform!(df, @astable begin
:x = :point[1]
:y = :point[2]
intermediate = expensive_computation(:x, :y)
:res1 = intermediate[1]
:res2 = intermediate[2]
end)
but then again, being able to write this as
@rtransform!(df, @astable begin
:x, :y = :point
:res1, :res2 = expensive_computation(:x, :y)
end)
Would be much more concise. Is there a reason that this behaviour is not implemented?
In DataFrames proper I can do something like
which automatically expands the returned iterable onto two new columns. As far as I can see, this would map to
in
DataFramesMeta, however, this does not seem to be currently possible.It is possible to fuse these operations with
@astable:but then again, being able to write this as
Would be much more concise. Is there a reason that this behaviour is not implemented?