我有几个data.tables
需要进行rbindlist
操作。这些表格包含了因素(factor),其中可能出现缺失的水平。然后,rbindlist(...)
与do.call(rbind(...))
的行为不同:
dt1 <- data.table(x=factor(c("a", "b"), levels=letters))
rbindlist(list(dt1, dt1))[,x]
## [1] a b a b
## Levels: a b
do.call(rbind, list(dt1, dt1))[,x]
## [1] a b a b
## Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
如果我想保留这些级别,是必须使用
rbind
还是有data.table
的方法呢?
rbindlist
函数之前,您可以随时提取级别,然后再将它们放回去(参见这里)。但我认为您说得对,应该有一个droplevels=TRUE
的参数。 - Justin