ncol = 30
DT = setDT(replicate(ncol, rnorm(3L), simplify = FALSE))
identical(colnames(rbind(DT[1], DT[3])), colnames(DT))
# [1] TRUE
ncol = 300
DT = setDT(replicate(ncol, rnorm(3L), simplify = FALSE))
identical(colnames(rbind(DT[1], DT[3])), colnames(DT))
# [1] FALSE
Follow up to #3306. The printing issue there is fixed by not using use.names=TRUE in that case. But rbindlist in general still has the issue. Also see: #3352 (comment)
minimal example: