如何将行追加到 R 数据框

2023-12-02

我查看了 StackOverflow,但找不到特定于我的问题的解决方案,该解决方案涉及将行附加到 R 数据框。

我正在初始化一个空的 2 列数据框,如下所示。

df = data.frame(x = numeric(), y = character())

然后,我的目标是迭代值列表,并在每次迭代中将一个值附加到列表末尾。我从以下代码开始。

for (i in 1:10) {
    df$x = rbind(df$x, i)
    df$y = rbind(df$y, toString(i))
}

我也尝试过这些功能c, append, and merge没有成功。如果您有任何建议,请告诉我。

评论更新:我不知道 R 是如何使用的,但我想忽略每次迭代更新索引所需的额外代码行,并且我无法轻松地预先分配数据帧的大小,因为我不不知道最终需要多少行。请记住,上面只是一个可复制的玩具示例。不管怎样,谢谢你的建议!


Update

不知道你想做什么,我将分享另一个建议:为每一列预分配你想要的类型的向量,将值插入到这些向量中,然后最后创建你的data.frame.

继续朱利安的f3(预先分配的data.frame)作为迄今为止最快的选项,定义为:

# pre-allocate space
f3 <- function(n){
  df <- data.frame(x = numeric(n), y = character(n), stringsAsFactors = FALSE)
  for(i in 1:n){
    df$x[i] <- i
    df$y[i] <- toString(i)
  }
  df
}

这是一种类似的方法,但其中data.frame作为最后一步创建。

# Use preallocated vectors
f4 <- function(n) {
  x <- numeric(n)
  y <- character(n)
  for (i in 1:n) {
    x[i] <- i
    y[i] <- i
  }
  data.frame(x, y, stringsAsFactors=FALSE)
}

microbenchmark“microbenchmark”包将为我们提供比system.time:

library(microbenchmark)
microbenchmark(f1(1000), f3(1000), f4(1000), times = 5)
# Unit: milliseconds
#      expr         min          lq      median         uq         max neval
#  f1(1000) 1024.539618 1029.693877 1045.972666 1055.25931 1112.769176     5
#  f3(1000)  149.417636  150.529011  150.827393  151.02230  160.637845     5
#  f4(1000)    7.872647    7.892395    7.901151    7.95077    8.049581     5

f1()(下面的方法)效率非常低,因为它调用的频率很高data.frame而且因为在 R 中以这种方式生长对象通常很慢。f3()由于预分配,性能得到很大改善,但是data.frame结构本身可能是这里瓶颈的一部分。f4()尝试绕过该瓶颈而不影响您想要采取的方法。


原答案

这确实不是一个好主意,但如果你想这样做,我想你可以尝试:

for (i in 1:10) {
  df <- rbind(df, data.frame(x = i, y = toString(i)))
}

请注意,在您的代码中,还存在另一个问题:

  • 你应该使用stringsAsFactors如果您希望字符不转换为因子。使用:df = data.frame(x = numeric(), y = character(), stringsAsFactors = FALSE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将行追加到 R 数据框 的相关文章

随机推荐

  • 当高度为 100% 时,IE 10 会出现显示表格 CSS 的 bug?

    我已经尝试了 3 天来避免在我的新响应式设计中使用表格 主要是因为每个人都说它们是邪恶的 另一方面 在对 SEO 和表格进行更多研究时 有些人甚至说这提高了他们的知名度 无论如何 div 和 HTML5 的语义要好得多 所以我真的很想让下面
  • Python地址下载

    下面的代码返回none 我该如何修复它 我正在使用Python 2 6 import urllib URL http download finance yahoo com d quotes csv s s f sl1t1v e csv sy
  • Objective C 方法签名可以指定枚举类型吗?

    VoiceName 是一个枚举 声明如下 enum VoiceName PAD RHYTHM PAD RHYTHM2 PAD RHYTHM3 PEEPERS ATMOSPHERE IMPULSE FAST PULSE HAIRYBALLS
  • Boost python 包装虚拟方法

    我正在使用 boost python 创建与 c 库的绑定 该库中的许多类都具有接受 iterator const iterator 类型作为参数的虚拟方法 我并不是特别想公开这些类型 但更愿意围绕这些虚拟方法创建一些包装器来接受适当的容器
  • webkit 上浮动 div 后“overflow:hidden”div 的边距行为

    我发现 float left div 后面的 overflow hidden div 的右侧边距加倍 可以使用以下代码进行测试
  • 如何获取 PyQt 中 QGroupbox 内存在的 Qcheckbox 的状态

    我的项目包含具有多个 QGroupbox 的 Qdialog 每个 GroupBox 包含一定数量的复选框 所有组框的复选框列表都是相同的 我没有太多声誉来加载图像 在这里 用户可以根据自己的需要选择复选框并按下 确定 按钮 按下 确定 按
  • 当我们告诉 PDO 不要这样做时,为什么它会生成警告?

    Problem 我们告诉 PDO 将每个问题包装到异常中 在某些情况下 它会生成一些警告 然后才抛出异常 Why它能做到吗 重复 SO 上没有关于它的正确答案 最后一个问题是MySQL 上的 PHP PDO 异常 警告消失了 但人们只是将其
  • 在Mysql中将数字转换为单词

    我正在从数据库中获取一个值 我希望将该值转换为一个单词Mysql 有人可以帮我吗 Eg 123 gt 这个值是从数据库获取的 它以数字形式保存 我想检索这个值一百二十三从数据库中 这样做的语法是什么 查询是这样的 select value
  • Session_Start 在默认 ASP.NET MVC3 项目上多次触发

    我想我可能发现了 ASP NET MVC 及其事件管道的问题 特别是 我发现 Session Start 被多次调用 每次都包含一个新的 SessionID 以下是分步过程 打开VS2010 文件 新项目 ASP NET MVC 3 Web
  • 罗马数字到数字的转换[重复]

    这个问题在这里已经有答案了 尝试编写程序来读取表示罗马数字的字符串 来自用户输入 然后将其转换为阿拉伯形式 整数 例如 I 1 V 5 X 10 等 基本上 采用 String 类型参数的构造函数必须将字符串 来自用户输入 解释为罗马数字并
  • 如何在 Inno Setup 中编辑和检索 JSON 文件的子部分的值

    我正在创建一个安装程序 我需要编辑和检索 JSON 文件中的值 要检索并编辑值Section 2工作正常 问题是编辑和检索子部分的值Section 1 下面我们可以看到一个例子 Section 1 children 1 children 1
  • 直接设置字典元组值

    是否可以做类似的事情 dictTupleTest key Item1 toggle 在以下情况下 Dictionary
  • 如何在空手道中为 json 数组设置动态值

    我有一个 json 文件 每个 post 请求都需要 uniq 值 uniqId 55555 对于所有 uniq id 我需要传递相同的 uniqId 到目前为止 我只能设置 endtoEndid 无法设置invoiceNum 和txnVa
  • JobIntentService 的 onHandleWork() 的最大作业执行时间是多少?

    我遇到了一个SecurityException在 Android 8 上崩溃targetSDK 26使用时JobIntentService 这是来自 JobIntentService 文档 那么最大作业执行时间限制是多少 如果超过它 是否可
  • 测试使用 PersistentEntityResourceAssembler 的自定义 RepositoryRestController

    我有一个RepositoryRestController公开一些持久性实体的资源 我的控制器上有一个方法 需要PersistentEntityResourceAssembler帮助我自动生成资源 RepositoryRestControll
  • 使用块将数据传递回视图控制器

    我在看这个问题 答案之一展示了如何使用块向后传递数据查看prepareForSegue方法 我的理解是这种方法确实应该用于向前传递数据 而不是向后传递数据 我想尝试为此目的进行阻止 将数据传递回另一个 viewController 我的问题
  • 在Python中的文件末尾声明函数[重复]

    这个问题在这里已经有答案了 是否可以在不完全定义函数的情况下调用该函数 当尝试这样做时 我收到错误 函数名未定义 我有 C 背景 所以这个问题困扰着我 在工作之前声明该函数 def Kerma return energy mass prin
  • 如何启用 Core Plot 饼图中的某个部分的触摸选择?

    我正在使用 Core Plot 框架来绘制饼图 并且在绘制饼图本身时没有任何问题 但是 我需要饼图本质上是交互式的 即 如果我点击饼图中的任何特定部分 它应该触发导航到显示该特定部分的详细信息的页面 我尝试使用该方法 void pieCha
  • Android 在应用程序中集成 google+

    任何人都可以在 Android 应用程序中使用 Google 吗 我搜索了同样的事情 但什么也没找到 如果有人有任何想法或相关代码 请在此发布 Thanks 目前还没有公共 API 但您可以在此处注册更新 https services go
  • 如何将行追加到 R 数据框

    我查看了 StackOverflow 但找不到特定于我的问题的解决方案 该解决方案涉及将行附加到 R 数据框 我正在初始化一个空的 2 列数据框 如下所示 df data frame x numeric y character 然后 我的目