A common refrain in R goes along these lines:
You should not have a bunch of related tables with names like
DT11. Iteratively reading and assigning to objects by name is messy. The solution is a list of tables of data!
Such a list looks like
set.seed(1) DT_list = lapply(setNames(1:3, paste0("D", 1:3)), function(i) data.table(id = 1:2, v = sample(letters, 2))) $D1 id v 1: 1 g 2: 2 j $D2 id v 1: 1 o 2: 2 w $D3 id v 1: 1 f 2: 2 w
Another perspective is that you should store these tables together as one table, by stacking them. This is straightforward to do using
DT = rbindlist(DT_list, id="src") src id v 1: D1 1 g 2: D1 2 j 3: D2 1 o 4: D2 2 w 5: D3 1 f 6: D3 2 w
This format makes a lot more sense with data.table syntax, where "by group" operations are common and straightforward.
For a deeper look, Gregor's answer might be a good place to start. Also check out
?rbindlist, of course. There's a separate example covering reading in a bunch of tables from CSV and then stacking them.