On Apr 4, 2014, at 10:32 AM, Dan Murphy wrote:

> I just noticed this annoyance, but I'm not the first one, apparently
> -- see 
> http://lists.r-forge.r-project.org/pipermail/datatable-help/2012-May/001176.html
> 
> The thread never answered the OP's question "Is this a bug?" so I
> assume the answer, unfortunately, is No.
> 

Well, using `within` outside of data,table objects is not really the "true" 
data-table way, is it?

DT= data.table(a=1:10, b=2:11)
> DT[ , ( c("c","d") ) := .SD[, list(a+b,a*b)] ]
> DT
     a  b  c   d
 1:  1  2  3   2
 2:  2  3  5   6
 3:  3  4  7  12
 4:  4  5  9  20
 5:  5  6 11  30
 6:  6  7 13  42
 7:  7  8 15  56
 8:  8  9 17  72
 9:  9 10 19  90
10: 10 11 21 110

(This answer was from Simon O'Hanlon on SO: 
http://stackoverflow.com/questions/16943939/elegantly-assigning-multiple-columns-in-data-table-with-lapply/16944343#16944343

Inside `[.data.table` expressions are handled without initial evaluation and 
sometimes `eval` needs to be called directly. Evaluation is deferred in many 
instances, but arguably closer to "computing on the language" than when using 
interactive R. The .SD object is the data.table self-reference mechanism so the 
`a+b` and the `a*b` are evaluated in the context of the column names of DT. And 
`:=` is a special data.table assignment function that avoids constructing 
multiple copies of data.table objects during column binding.


> If not a bug, do users of within have a workaround to produce a result
> with columns as ordered within 'within'? I can think of a way using
> names and subset-with-select, but that seems unduly kludgy.

data.table users would think your `within` approach was suspicious if not also 
kludgey. It would be an end run around the package's syntacical modifications 
and it may lose the space efficiencies that data.table offers.

-- 

David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to