My apologies, I had a mistake in my previous email.  (I forgot that data.table does not coerce strings to factor)
It looks like the `rbindlist` behavior observed occurs for both, a list of data.tables and a list of data.frames if there is factor column

    # sample data, using data.frame
    set.seed(1)
    sampleList.DF <- lapply(LETTERS[1:5], function(L) 
      data.frame(Val1=rnorm(3), Val2=runif(3), FactorCol=factor(L)) )
    sampleList.DF <- lapply(sampleList.DF, function(x) 
      {x$StringCol <- as.character(x$FactorCol); x})

    # sample data, using data.table
    set.seed(1)
    sampleList.DT <- lapply(LETTERS[1:5], function(L) 
      data.table(Val1=rnorm(3), Val2=runif(3), FactorCol=factor(L)) )
    sampleList.DT <- lapply(sampleList.DT, function(x) 
       x[, StringCol := as.character(FactorCol)])


# rbindlist results: 

    rbindlist(sampleList.DT)
    rbindlist(sampleList.DF)

# expected behavior similiar to do.call(rbind, LIST)

    do.call(rbind, sampleList.DF)
    do.call(rbind, sampleList.DT)
