list - 逐行创建 R 数据框

标签 list r dataframe

我想在 R 中逐行构造一个数据帧。我做了一些搜索,我想到的只是创建一个空列表的建议,保留一个列表索引标量,然后每次添加列出单行数据帧并将列表索引前进一。最后,do.call(rbind,) 在列表中。

虽然这可行,但看起来很麻烦。难道没有更简单的方法来实现同样的目标吗?

显然,我指的是无法使用某些 apply 函数并且明确需要逐行创建数据帧的情况。至少,有没有办法插入到列表的末尾,而不是显式地跟踪最后使用的索引?

最佳答案

您可以通过附加或使用 rbind() 来逐行增长它们。

这并不意味着您应该这样做。动态增长的结构是 R 中效率最低的编码方式之一。

如果可以的话,请预先分配整个 data.frame:

N <- 1e4  # total number of rows to preallocate--possibly an overestimate

DF <- data.frame(num=rep(NA, N), txt=rep("", N),  # as many cols as you need
                 stringsAsFactors=FALSE)          # you don't know levels yet

然后在操作过程中一次插入行

DF[i, ] <- list(1.4, "foo")

这应该适用于任意 data.frame 并且效率更高。如果你超过了 N,你总是可以在最后缩小空行。

关于list - 逐行创建 R 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642535/

相关文章:

performance - Haskell - 从 List 转换为 Data.Vector

r - R 中合并中的循环多列

r - 在 R 中,绘制非线性曲线

r - 如何将列数据变成列名?

python - 在分组中维护 Pandas Dataframe 主要排序顺序

r - 从 R 中两个较大的 data.frame 中的任意两个同名变量中生成 `data.frame`

list - 使用 Haskell 的交替系列

python - 如何将列表元素转换为列表?

python - 如何使用 re.findall 在 python 中只获取小写字母的字符串

r - geom_segment 箭头设置 - 头部与线宽度相同