我试图将一个13,000个元素的列表转换为一个数据框,其中每个元素都是一个zoo对象,nr = 230和ncol = 4。
我试过setattr(mylist, 'class', 'data.frame') ,但它导致了一个巨大的NA向量。 我也尝试了quickdf(mylist)软件包中的quickdf(mylist)函数,但那也不起作用。
do.call(rbind.data.frame, mylist)类型的方法非常慢,因此在这种情况下不是选项。
任何关于将这样的列表转换为数据框的最有效方法的建议?
I am trying to convert a list of 13,000 elements, each element being a zoo object with nr = 230 and ncol = 4, to a dataframe.
I have tried setattr(mylist, 'class', 'data.frame'), but it resulted in a huge vector of NAs. I have also tried the quickdf(mylist) function from the plyr package, but that didn't work either.
The do.call(rbind.data.frame, mylist)type methods are very slow, thus not an option in this case.
Any suggestion as to the most efficient method to convert such a list to a dataframe?
最满意答案
使用data.table包中的rbindlist。
data <- matrix(data = 1, nrow = 230, ncol = 4) lstData <- rep(list(data), 16000) library(data.table) lstData <- Map(as.data.frame, lstData) dfrData <- rbindlist(lstData) system.time(dfrData <- rbindlist(lstData)) user system elapsed 0.12 0.03 0.15Use rbindlist from the data.table package.
data <- matrix(data = 1, nrow = 230, ncol = 4) lstData <- rep(list(data), 16000) library(data.table) lstData <- Map(as.data.frame, lstData) dfrData <- rbindlist(lstData) system.time(dfrData <- rbindlist(lstData)) user system elapsed 0.12 0.03 0.15将大型列表转换为data.frame(Converting a large list into a data.frame)我试图将一个13,000个元素的列表转换为一个数据框,其中每个元素都是一个zoo对象,nr = 230和ncol = 4。
我试过setattr(mylist, 'class', 'data.frame') ,但它导致了一个巨大的NA向量。 我也尝试了quickdf(mylist)软件包中的quickdf(mylist)函数,但那也不起作用。
do.call(rbind.data.frame, mylist)类型的方法非常慢,因此在这种情况下不是选项。
任何关于将这样的列表转换为数据框的最有效方法的建议?
I am trying to convert a list of 13,000 elements, each element being a zoo object with nr = 230 and ncol = 4, to a dataframe.
I have tried setattr(mylist, 'class', 'data.frame'), but it resulted in a huge vector of NAs. I have also tried the quickdf(mylist) function from the plyr package, but that didn't work either.
The do.call(rbind.data.frame, mylist)type methods are very slow, thus not an option in this case.
Any suggestion as to the most efficient method to convert such a list to a dataframe?
最满意答案
使用data.table包中的rbindlist。
data <- matrix(data = 1, nrow = 230, ncol = 4) lstData <- rep(list(data), 16000) library(data.table) lstData <- Map(as.data.frame, lstData) dfrData <- rbindlist(lstData) system.time(dfrData <- rbindlist(lstData)) user system elapsed 0.12 0.03 0.15Use rbindlist from the data.table package.
data <- matrix(data = 1, nrow = 230, ncol = 4) lstData <- rep(list(data), 16000) library(data.table) lstData <- Map(as.data.frame, lstData) dfrData <- rbindlist(lstData) system.time(dfrData <- rbindlist(lstData)) user system elapsed 0.12 0.03 0.15
发布评论