Sometimes a minor change to your R code can make a big difference in processing time. Here is an example showing that if you’re don’t care about the names attribute when unlist():ing a list, specifying argument use.names = FALSE can speed up the processing lots!

> x <- split(sample(1000, size = 1e6, rep = TRUE), rep(1:1e5, times = 10))
> t1 <- system.time(y1 <- unlist(x))
> t2 <- system.time(y2 <- unlist(x, use.names = FALSE))
> stopifnot(identical(y2, unname(y1)))
> t1/t2
user  system elapsed
 103     NaN     104

That’s more than a 100 times speedup.

So, check your code to see to which unlist() statements you can add an use.names = FALSE.