R data.table:将向量转换为一行data.table

New*_*tat 3 optimization r data.table

我有一个字符向量x,我想以快速的方式变成一行data.table.该命令data.table(x)返回一列data.table.现在,data.table(t(x))完成工作,但我想知道是否有更快的方法.

akr*_*run 6

我们可以用

x <- 1:5
setDT(as.list(x))[]
Run Code Online (Sandbox Code Playgroud)

基准

v1 <- 1:1e5
system.time(data.table(t(v1)))
#   user  system elapsed 
#  12.95    0.01   12.97 
system.time(setDT(as.list(v1)))
#  user  system elapsed 
#   5.75    0.00    5.75 

system.time(as.data.table(t(v1)))
#    user  system elapsed 
#   6.35    0.00    6.34 
Run Code Online (Sandbox Code Playgroud)

更新

如果将上面的练习转换rbind为带有a的向量data.table,我们就不需要将其转换vectordata.table

 d1 <- data.table(V1= 1:3, V2= 4:6, V3=7:9)
 rbindlist(list(d1, as.list(1:3)))
Run Code Online (Sandbox Code Playgroud)

  • 同样``as.data.table(t(v1))`似乎更快(和setDT类似) (2认同)
  • @NewNameStat同样,它为我返回相同的即一行data.table.`dim(as.data.table(list_x))#[1] 1 5 dim(setDT(list_x))#[1] 1 5`基于对nicola的评论,我认为你不需要转换为` data.table`.只需将它用作`list`,然后将其放在`rbindlist`中 (2认同)