【发布时间】:2017-08-23 15:19:56
【问题描述】:
我使用结构命令将大列表转换为数据框(我阅读了 SO 中的相关帖子):
l <- list()
l[[1]]<-c("2048","0","25","0","453826","65101","1503497087","1503497031","4_1R")
l[[2]]<-c("406","0","26","0","453826","65101","1503497087","1503497055","4_1R")
l[[3]]<-c("407","0","27","0","453826","65101","1503497087","1503497083","4_1R")
n <- length(l[[1]])
DF <- structure(l, row.names = c(NA, -n), class = "data.frame")
print(DF)
但行排列像列。我可以使用转置数据框:
library(data.table)
DF <- transpose(DF)
没关系,
但是,“结构”中是否有任何选项表明我想要一个行绑定和行排序的数据框?
【问题讨论】:
-
试试
as.data.frame(do.call(cbind, l)) -
你可以通过
as.data.frame(l, col.names = c('COL1','COL2','COL3'))得到同样的结果 -
@akrun 我认为他们想要来自 data.table 的
do.call(rbind, l)或rbindlist(lapply(l, as.list))。 -
你很好,但是对于需要几秒钟的大型列表(1GB),我需要一种更快的方法。 @Imo 您的 rbindlist 有效,但我无法弄清楚,我希望 rbindlist 能够对列表进行行绑定。
-
嗯,
transpose(setDT(l))和你一样快,我很确定。如果您想要更快,也许可以尝试以更好的方式读取数据..?
标签: r performance list dataframe data.table