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

虽然这是可行的,但似乎非常麻烦.难道没有更简单的方法来实现同样的目标吗?

显然,我指的是不能使用apply个函数,需要逐行创建数据帧的情况.至少,有没有一种方法可以直接进入列表的末尾,而不是显式地跟踪最后使用的索引?

推荐答案

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

这并不意味着你应该这么做.动态增长的结构是在R中编写代码的效率最低的方法之一.

如果可以,分配所有数据.前框:

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")

这应该适用于任意数据.框架,并且效率更高.如果超过了N,则始终可以在末尾缩小空行.

R相关问答推荐

在 R 中系统地重命名字符串

从 CI 输出制作表格

如何将数字序列添加到每组data.frame?

在向量中的下一个较高值之前查找值的数量

在R中按组查找最长的值序列

从R中的数字字符串创建单个数字的列总计

如何使用 r data.table 填写数据框中所有可能的列?

模型未能在 r (lme4) 中收敛或不收敛

在指定时间后无法收敛时停止 Keras

跨不同数据集跟踪观察结果(例如 sub-reddits)

根据其他两列的范围信息创建和填充新列

比较两个矩阵,保持一个矩阵中的值在另一个矩阵中为 TRUE

考虑到 position='dodge' 的条形,如何在柱状条形图上添加线条,其中线条通过条形的中间顶部?

ggplot 适合图例大小到绘图大小

我如何知道模型是否在 lme4 中收敛或未能在 r 中出现警告消息?

如何使用“ggplot2”从数字矩阵中绘制栅格

如何在 R 中创建带有拟合曲线的 3D 条形图

如何将列变成R中的列名

如何清理包含混合变量的列,例如 char 格式的当前、空白、R 中的字符串

如何创建一个值而不是一个列表