[datatable-help] suggestion for transform.data.table.Rd

Matthew Dowle mdowle at mdowle.plus.com
Tue Oct 16 11:40:02 CEST 2012


Well spotted, thanks. Will do. Filed as #2316 linking back to this thread.

And will include this in ?transform.data.table :

    dt[, transform(.SD, c=max(b)), by="a"]
    dt[, c:=max(b), by="a"]   # same, but much much faster

Btw, just to highlight to all that `:=`() is working, and by group, in
1.8.3 now. This makes multiple := by group particularly elegant. Thanks to
Thell Fowler for the suggestion.

DT[, `:=`(newcol1:=max(a),
          newcol2:=min(b),
          existingcol:=max(c),
          newcol3:=mean(a)), by=grp]

Rather than multiple LHS and having to set with=FALSE, which also now
works by group and you no longer need with=FALSE. But `:=`(...) gets each
LHS and RHS together on one line in pairs, so makes it easier to read.

For people who have joined the list recently, the latest
info/documentation is always in NEWS first. It usually takes a version or
two for it to be fleshed out in the help files. "NEWS" is considered
documentation :

https://r-forge.r-project.org/scm/viewvc.php/pkg/NEWS?view=markup&root=datatable


> It was not clear to me from the help page when I should use
> `transform` or `within` instead of `:=`.
>
> May I suggest copying the following comment (found in data.table.R) to
> the help page?
>
> # `within` and other similar functions in data.table are
> # not just provided for users who expect them to work, or
> # prefer syntax they're used to, but for non-data.table-aware
> # packages to retain keys (for example). Hopefully users and
> # code will use the faster data.table syntax in time.
>
> Also, the examples section of ?transform.data.table has the following
> commented out "example"
>
>     # dt[, transform, c = max(b), by="a"]  # like "ave"
>
> If run, this will give an error
>     Error in `[.data.table`(dt, , transform, c = max(b), by = "a") :
>       unused argument(s) (c = max(b))
>
> Based on test 104, I think that should be changed to
>
>     dt[, transform(.SD, c=max(b)), by="a"]
>
> Best,
> Garrett
> _______________________________________________
> datatable-help mailing list
> datatable-help at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
>




More information about the datatable-help mailing list