Steve,

You're absolutely right that DT[, a := a * 2] is easier to read, but that's not my point.

Maybe I have not pointed this out clearly enough and I'm sorry about that, but my point is NOT how to multiply a number by two.

Instead, my point is how to do some calculation with a variable and then reassign that result back to that variable. (That's the whole rationale behind `%<>%` in magrittr!)

This calculation could IN REALITY be of course more complicated than *2, and could involve many functions chained together and a long variable name that is cumbersome to read/type repeatedly, e.g.

DT[, long.variable.name := long.variable.name %>% function.a %>% function.b]

I do think that the other version would be more easy to read and type:

DT[, long.variable.name %<>% function.a %>% function.b]

Hope that clarifies.

M

On 07/01/2015 04:06 AM, Steve Lianoglou wrote:
Hi,

I love data.table and I also love magrittr.

I really love both of these, too.

However, some things don't work,
e.g.

DT <- data.table(a = 1:3, b = 4:6)
DT[, a %<>% `*`(2)]    # instead of DT[, a := a %>% `*`(2)]

In my personal opinion, though, I feel like this might be going a
stretch too far.

Although this might just be a contrived example, it's hard for me to
divine an instance where this would look any less contrived. I mean,
is:

DT[, a %<>% `*`(2)] ## or
DT[, a := a %>% `*`(2)]

Really any more useful/simpler than:

DT[, a := a * 2]

Can't think of when I'd prefer the magrittr'ized version ... perhaps
when the column name (`a`) is actually a much longer? (so that %<>%
saves you some typing), or?

-steve

_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help

Reply via email to