如何基于因子列将R中的data.table快速拆分为列表?

如何基于因子列将R中的data.table快速拆分为列表?,r,list,split,data.table,data-manipulation,R,List,Split,Data.table,Data Manipulation,具有所需结果的示例(通过硬编码实现) DT对于类“data.table”的对象,有一个拆分方法。但与base R的data.frames方法不同,有一个参数by需要引用列名 从帮助('split.data.table'),我的重点是: 详细信息 参数f只是为了与data.frame方法的用法保持一致建议改为按参数使用,它将更快、更灵活,并且默认情况下将根据数据中的顺序保留顺序 相反的是rbindlist。它按照a、b、c的顺序给出原始DT rbindlist(split(DT, by = 'f'

具有所需结果的示例(通过硬编码实现)


DT对于类
“data.table”
的对象,有一个
拆分方法。但与base R的data.frames方法不同,有一个参数
by
需要引用列名

帮助('split.data.table')
,我的重点是:

详细信息
参数f只是为了与data.frame方法的用法保持一致建议改为按参数使用,它将更快、更灵活,并且默认情况下将根据数据中的顺序保留顺序

相反的是
rbindlist
。它按照
a
b
c
的顺序给出原始DT

rbindlist(split(DT, by = 'f'))
#   val f
#1:   1 a
#2:   4 a
#3:   6 a
#4:   7 a
#5:   2 b
#6:   3 b
#7:   5 b
#8:   8 c

对于data.tables,有一种
split
方法
split(DT,by='f')
应该这样做。@RuiBarradas,相反的是
rbindlist
?是的
rbindlist(split(DT,by='f'))
给出原始
DT
,行顺序为a、b、c。@RuiBarradas请将您的评论发布为answer@jangorecki完成。谢谢你的注意。
split(DT, by = 'f')
#$a
#   val f
#1:   1 a
#2:   4 a
#3:   6 a
#4:   7 a
#
#$b
#   val f
#1:   2 b
#2:   3 b
#3:   5 b
#
#$c
#   val f
#1:   8 c
rbindlist(split(DT, by = 'f'))
#   val f
#1:   1 a
#2:   4 a
#3:   6 a
#4:   7 a
#5:   2 b
#6:   3 b
#7:   5 b
#8:   8 c