我有一些想要data.tables
的rbindlist
。该表包含具有(可能缺少)水平的因素。然后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
更快,因为它不检查do.call(rbind.data.frame,...)
绑定(bind)后为什么不设置水平?
Dt <- rbindlist(list(dt1, dt1))
setattr(Dt$x,"levels",letters) ## set attribute without a copy
从
?setattr
:关于缺少水平的因素的rbindlist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19451090/