do.call(rbind, lapply(results.list, function(dd) { dd[with(dd, order(FDR)),][(1:100), ]}))
so assuming results.list is a list of data frames we want to apply (lapply is for lists) the function that sorts them by FDR and grabs the first 100 rows (function(dd) {....} <- stolen from other stackoverflow post for sorting by column) to each data frame. The result of this will be a list of data frames. We can call do.call which is a fancy function that takes a function and a list where the list will be decomposed from a list to the arguments for our function. In this case our function is rbind will will take the X number of 100 row tables and create one big table. Let me know if you want further explanation.