This is available from v1.9.0+. From NEWS:
o Following this S.O. post, a function
setDTis now implemented that takes alist(named and/or unnamed),data.frame(ordata.table) as input and returns the same object as adata.tableby reference (without any copy). See?setDTexamples for more.
This is in accordance with data.table naming convention – all set* functions modifies by reference. := is the only other that also modifies by reference.
require(data.table) # v1.9.0+
setDT(data) # converts data which is a data.frame to data.table *by reference*
See history for older (now outdated) answers.