# Using DataFramesMeta and Lazy in a function

**URL:** <https://discourse.julialang.org/t/using-dataframesmeta-and-lazy-in-a-function/11616>\
**Category:** Data\
**Created:** [June 12, 2018, 6:09pm UTC](https://discourse.julialang.org/t/using-dataframesmeta-and-lazy-in-a-function/11616 "2018-06-12T18:09:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [June 12, 2018, 6:09pm UTC](https://discourse.julialang.org/t/using-dataframesmeta-and-lazy-in-a-function/11616/1 "2018-06-12T18:09:46Z")

</div>

I’m working with `dplyr` today and ran into something that annoys me often.

If I have a number of operations to do in repeatedly on a dataframe, its useful to put them in a function. However because of R’s lazy evaluation, using `dplyr` operations in a function requires the use of `quo` and `!!` operations that honestly are a big pain to deal with.

R puts you in the scenario where you either have to use `quo` and `!!` all the time or revert to the less-than-desirable base `df$` syntax if you want to put things in functions.

What I want is to be able to use functions, but also never have to leave the nice “lazy” way of doing things. So I tried out `DataFramesMeta` to see if Julia is better than R at this.

```julia
function new100(df, x)
     transform(df, x = 100)
end

df = DataFrame(rand(5,5))
new100(df, :y)

# makes a new column :x
│ Row │ x1 │ x2 │ x3 │ x4 │ x5 │ x │
├─────┼──────────┼──────────┼────────────┼───────────┼───────────┼─────┤
│ 1 │ 0.804735 │ 0.864846 │ 0.575764 │ 0.790783 │ 0.671446 │ 100 │
│ 2 │ 0.462695 │ 0.83796 │ 0.00718302 │ 0.566886 │ 0.36546 │ 100 │
│ 3 │ 0.905707 │ 0.387376 │ 0.550329 │ 0.0816239 │ 0.422751 │ 100 │
│ 4 │ 0.251054 │ 0.109737 │ 0.828423 │ 0.382226 │ 0.474074 │ 100 │
│ 5 │ 0.136172 │ 0.326156 │ 0.826901 │ 0.137245 │ 0.0502391 │ 100 │

```

I understand that the code for DataFramesMeta is already pretty difficult, with a lot of complicated parsing and macro code. Is what I want possible to do now with DataFramesMeta and Lazy? Is it a feasible feature to add?

Edit: I remembered that I posted the exact same thing earlier [Replicating a useful Stata Workflow with DataFramesMeta](https://discourse.julialang.org/t/replicating-a-useful-stata-workflow-with-dataframesmeta/8671)

Keeping it for posterity and searchability.

The takeaway is that this would require a PR to work.
