我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
Run Code Online (Sandbox Code Playgroud)
如果我想保持水平,我rbind是否有data.table办法或有办法吗?
我想rbindlist更快,因为它不进行检查do.call(rbind.data.frame,...)
为什么绑定后不设置级别呢?
Dt <- rbindlist(list(dt1, dt1))
setattr(Dt$x,"levels",letters) ## set attribute without a copy
Run Code Online (Sandbox Code Playgroud)
来自?setattr:
setattr() 在许多情况下通过引用设置属性很有用,并且可以用于任何对象或对象的一部分,而不仅仅是 data.tables。
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |