r - 随着数据框变大,如何防止 rbind() 变得非常慢?

标签 r performance dataframe append rbind

我有一个只有 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 都需要找到一个新的连续内存块来适应数据帧。大量复制。

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

相关文章:

r - 选择输入 : Have Multiple = TRUE and filter based off that

javascript - 字符串是小于还是大于包含相同值的整数?

python - 过滤 Pandas DataFrame 中缺失值的百分比

python - 基于其他数据帧的数据帧的条件填充

r - 在 R 中添加行并查找特定列值的最新日期

r - TwitteR、ROAuth 和 Windows : register OK, 但证书验证失败

R Shiny 书签按钮

c# - Microsoft Orleans grain 通信性能

java - JAX-WS - 创建大量 xjc java 对象时如何提高性能?

python - 如果一个列字符串包含在另一个 Python 中,则一对多合并两个数据框