我有一个只有1行的数据框。为此,我开始使用rbind添加行

df #mydataframe with only one row
for (i in 1:20000)
{
    df<- rbind(df, newrow)

}

随着我的成长,这变得非常缓慢。这是为什么?以及如何使这种类型的代码更快?

最佳答案

您处于2nd circle of hell,即无法预分配数据结构。

在R中,以这种方式增长对象是一件非常非常糟糕的事情。请预先分配并插入:

df <- data.frame(x = rep(NA,20000),y = rep(NA,20000))

或重组代码,以避免这种增量的行添加。正如我在链接中所讨论的那样,速度缓慢的原因是,每次添加一行时,R需要查找一个新的连续内存块以适合数据帧。Lots o复制。

关于r - 我如何防止rbind()在数据帧变大时变得非常慢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14693956/

10-12 03:51