我正在寻找将所有100000列表合并成一个数据框的最快方法。 联合所有不是一个do.call(rbind)问题,因为我想在一列输出并添加组中的每个列表的最小值(为了更好地理解输出,请参阅下面的代码)。联合所有最快的方法
我已经尝试了两种不同的工作,但速度很慢,所以我正在寻找使用data.table或dplyr或任何可以使它更好的东西。
例重现我想要什么:
a <- c(1:3)
b <- c(12:20)
relations <- list(a,b)
输出两种不同的解决方案,我试过了。
1 - 溶液基本上连接具有rbind循环上的列表中的元素dataframes:
full_group <- NULL
for(i in 1:length(relations))
{
full_group = rbind(full_group,
data.frame(id = relations[[i]] ,
group = min(relations[[i]])))
print(i)
}
2溶液:串连矢量,然后创建AA数据帧出来的结果:
full_group <- NULL
groups <- NULL
id <- NULL
for(i in 1:length(relations))
{
id <- c(id , relations[[i]])
groups <- c(groups , rep(min(relations[[i]]) , length(relations[[i]])))
print(i)
}
full_group = data.frame(id = id ,
groups = groups)
而不是重新分配“id”和“groups”,您可以分别使用'unlist(关系)'和'rep(sapply(关系,min),长度(关系))'。 –
阅读关于'data.table :: rbindlist',相关的SO问题:https://stackoverflow.com/questions/15673550/why-is-rbindlist-better-than-rbind – jangorecki