[datatable-help] using lapply(.SD...) with base operators

Michael Nelson michael.nelson at sydney.edu.au
Mon Aug 20 02:06:01 CEST 2012

I have just noticed (while answering this SO question

a quirk in referencing operators within a call to lapply(.SD,...)

In base r,


will work


DT <- data.table(id=rep(1:5,20), a=1:100, b=sample(1:100, 100), c=sample(1:100, 100))

DT[,lapply(.SD, '+', 1), by = id]

returns 'attempt to apply non-function'

Ensuring that the base operator is called works

DT[,lapply(.SD, base::'+', 1), by = id]

as does

DT[,lapply(.SD, Primitive('+'),1), by = id]

which is quicker

Would it be worth noting this in one of the vignettes?



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/datatable-help/attachments/20120820/16f60deb/attachment.html>

More information about the datatable-help mailing list