Faster version of combn

You could use combnPrim from gRbase source(“http://bioconductor.org/biocLite.R”) biocLite(“gRbase”) # will install dependent packages automatically. system.time({ d.1 <- as.data.table(t(combn(d$id, 2))) }) # user system elapsed # 27.322 0.585 27.674 system.time({ d.2 <- as.data.table(t(combnPrim(d$id,2))) }) # user system elapsed # 2.317 0.110 2.425 identical(d.1[order(V1, V2),], d.2[order(V1,V2),]) #[1] TRUE