Hi Frank, I don't have time to get into the details of your entire question right now, but:
On Thu, Aug 15, 2013 at 8:49 AM, Frank Erickson <[email protected]> wrote: > Hi, > > I really like the DT1[DT2,z:=...] idiom. Unfortunately, the value of a > merge() on other columns is a new data.table, so modifying DT1, like > merge(DT1,DT2,by=...)[,z:=...], is not possible. Or is there actually a way > to do this that I am missing? I just wanted to mention that unless I am misunderstanding what you want, this is entirely possible, and the way you suggest it might work is actually the way to do it. Consider: R> dt1 <- data.table(a=sample(letters[1:2], 5, rep=T), b=runif(5), key='a') R> dt2 <- data.table(a=c('a', 'b'), c=rnorm(5), key='a') R> dt1 a b 1: a 0.02517147 2: a 0.85459776 3: a 0.67472168 4: a 0.89684769 5: b 0.11619613 R> dt2 a c 1: a -0.07817539 2: b -1.28897689 R> out <- merge(dt1, dt2)[, d := b + c] a b c d 1: a 0.02517147 -0.07817539 -0.05300392 2: a 0.85459776 -0.07817539 0.77642237 3: a 0.67472168 -0.07817539 0.59654629 4: a 0.89684769 -0.07817539 0.81867230 5: b 0.11619613 -1.28897689 -1.17278075 Will come back later to look through the rest of your question if still necessary. HTH, -steve -- Steve Lianoglou Computational Biologist Bioinformatics and Computational Biology Genentech _______________________________________________ datatable-help mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
