KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I just discovered this warning in my script that was a bit strange. # Warning message: # In rbindlist(list(DT.1, DT.2)) : NAs introduced by coercion Observation 1: Here's a reproducible example: require(data.table) DT.1 <- data.table(x = letters[1:5], y = 6:10) DT.2 <- data.table(x = LETTERS[1:5], y = 11:15) # works fine rbindlist(list(DT.1, DT.2)) # x y # 1: a 6 # 2: b 7 # 3: c 8 # 4: d 9 # 5: e 10 # 6: A 11 # 7: B 12 # 8: C 13 # 9: D 14 # 10: E 15 However, now if I convert column x to a factor (ordered or not) and do the same: DT.1[, x := factor(x)] rbindlist(list(DT.1, DT.2)) # x y # 1: a 6 # 2: b 7 # 3: c 8 # 4: d 9 # 5: e 10 # 6: NA 11 # 7: NA 12 # 8: NA 13 # 9: NA 14 # 10: NA 15 # Warning message: # In rbindlist(list(DT.1, DT.2)) : NAs introduced by coercion But rbind does this job nicely! rbind(DT.1, DT.2) # where DT.1 has column x as factor # do.call(rbind, list(DT.1, DT.2)) # also works fine # x y # 1: a 6 # 2: b 7 # 3: c 8 # 4: d 9 # 5: e 10 # 6: A 11 # 7: B 12 # 8: C 13 # 9: D 14 # 10: E 15 The same behaviour can be reproduced if column x is an ordered factor as well. Since the help page ?rbindlist says: Same as do.call("rbind",l), but much faster. , I'm guessing this is not the desired behaviour? Here's my session info: # R version 3.0.0 (2013-04-03) # Platform: x86_64-apple-darwin10.8.0 (64-bit) # # locale: # [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 # # attached base packages: # [1] stats graphics grDevices utils datasets methods base # # other attached packages: # [1] data.table_1.8.8 # # loaded via a namespace (and not attached): # [1] tools_3.0.0
Tags (comma-separated)
Save Edits
Cancel