将第一行添加到空 data.frame 时,行号不同(NA 与 1)

2023-11-24

我想了解为什么这两种索引空的方法data.frame导致NA分配给第一行的行号only:

方法一:

df <- data.frame(Number=numeric(), Text=character(), stringsAsFactors = FALSE)
df[1,]$Number <- 123456
df[1,]$Text <- "abcdef"
df[2,]$Number <- 456789
df[2,]$Text <- "abcdef"

输出1:

> df
   Number   Text
NA 123456 abcdef
2  456789 abcdef

方法二:

df <- data.frame(Number=numeric(), Text=character(), stringsAsFactors = FALSE)
df[1,1] <- 123456
df[1,2] <- "abcdef"
df[2,1] <- 456789
df[2,2] <- "abcdef"

输出2:

> df
  Number   Text
1 123456 abcdef
2 456789 abcdef

我看到的唯一区别是第一个方法访问data.frame使用列名称而不是列号,但我不明白这会导致NA行号被分配给仅第一次观察因为从第二行开始行号似乎按预期工作。


好吧,这个答案最重要的部分是应该避免这样的代码。将数据逐行添加到 R 中的 data.frame 中效率非常低(参见第 2 圈)R地狱)。几乎总是有更好的方法来做到这一点,具体取决于您到底在做什么。

但要了解这里发生的事情。所有这一切都归结为$.data.frame<-, [.data.frame, and [<-.data.frame功能。在第一种情况下,与

df[1,]$Number <- 123456

你首先要做的是调用的子集[<-.data.frame。当您请求 data.frame 中不存在的行时,您会得到一堆所有内容的 NA 值(包括行名称)。现在您有一个空的 data.frame,列和行名称中包含 NA 值。现在你打电话$<-.data.frame只需更新Number柱子。您不更新行号。然后这个新值被传递给[<-.data.frame将其合并回 data.frame 中。当此命令运行时,它会检查以确保不存在重复的行名称。对于第一行,由于只有一行并且其名称为 NA,因此保留该名称。但是,当存在重复名称时,该函数会将这些值替换为行号的索引。这就是为什么第一行得到 NA,但当它尝试添加下一行时,它再次尝试 NA,但发现这是重复的,因此必须选择一个新名称。 (看看当你尝试时会发生什么df[1:2,]$Number <- 123456 then df[3,]$Number <- 456789)

另一方面,当你这样做时

df[1,1] <- 123456

这不会首先进行子集化来创建缺少行名称的行。你直接跳过作业$.data.frame<- and [.data.frame。在这种情况下,它不必合并到具有 NA 行名称的新行中,它可以立即创建该行并分配行名称。这只是调用赋值运算符的一个特殊属性,必须先进行提取。您可以使用以下命令打开调试器debug(`[<-.data.frame`)看看到底是如何发生的。

所以第一种方法基本上是做三个步骤:1)提取df[1,], 2) 更改数字列的值,然后 3) 将该新值合并回df[1,]。第二种方法跳过第一个步骤,直接将值合并到df[1,]。真正的区别在于每个函数如何为尚不存在的行选择行名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将第一行添加到空 data.frame 时,行号不同(NA 与 1) 的相关文章

  • r:按多列分组并计数

    我有以下数据框 df LeftOrRight SpeedCategory NumThruLanes R 25to45 3 L 45to62 2 R Gt62 1 我想按速度类别对其进行分组 并循环遍历其他列以获取每个速度类别中每个唯一代码的
  • R中无法连接odbc数据库

    我一直在尝试使用以下命令将我公司的 DMS 连接到 RodbcConnect命令 但收到以下消息 myConn lt odbcConnect NZSQL uid cejacobson pwd password Warning message
  • 如何使用 ggplot2 对曲线下的区域进行着色

    我一直在尝试使用 ggplot2 生成类似于此 R 图形的绘图 xv lt seq 0 4 0 01 yv lt dnorm xv 2 0 5 plot xv yv type l polygon c xv xv lt 1 5 1 5 c y
  • 从受密码保护的站点读取信息

    我一直在 R 教程中使用 readLines 从网站上抓取信息 我现在希望从我自己的网站提取数据 特别是 awstats 数据 但是该域受密码保护 有没有一种方法可以通过用户名和密码传递我需要的特定 awstats 数据的 url url
  • data.table 的包装函数

    我有一个已经使用 data frame 上下文编写的项目 为了缩短计算时间 我尝试利用 data table 的速度 我的方法是构造包装函数 读取帧 将它们转换为表 进行计算 然后转换回帧 这是一个简单的例子 FastAgg lt func
  • 根据 R 中的字符串模式选择行

    假设我有以下数据 df lt data frame name c TO for Turnover for people HC people Hello world beenie man apple pears TO is number c
  • 如何在 R Markdown 中的内联 LateX 方程中输出 R 变量的值(即动态更新)

    我无法找到一种方法将 r 代码实现到 R markdown 中的内联 LateX 方程中 目标是如果变量 值 发生变化 则不必对它们的值进行硬编码 Given values lt c 1 4 2 5 7 9 avg lt sum value
  • 行方向变异的有效方法

    我有两个数据框 dfUsers and purchases使用以下代码生成 set seed 1 library data table dfUsers lt data table user letters 1 5 startDate sam
  • XLConnect 无法确定 JAVA_HOME 错误

    感谢您的帮助 我正在尝试运行 XLconnect 但收到此错误消息 gt library XLConnect lib loc C Users 1144143929 Documents R win library 2 15 Error onL
  • 使用神经网络包进行多项分类

    这个问题应该很简单 但文档没有帮助 我正在使用 R 我必须使用neuralnet多项式分类问题的包 所有示例均针对二项式或线性输出 我可以使用二项式输出进行一些一对一的实现 但我相信我应该能够通过使用 3 个单元作为输出层来做到这一点 其中
  • R 中的点图每行有多个值

    我有以下 R 输入文件 car 1 car 2 car 3 car2 1 car2 2 car2 3 然后 我使用以下命令来绘制图表 autos data 点图 autos data V2 autos data V1 但这将每个汽车和 ca
  • Shiny:从DT数据表中选定的行获取信息

    我们正在尝试重新创建示例 https demo shinyapps io 029 row selection https demo shinyapps io 029 row selection 使用DT包来渲染数据帧而不是shiny包 DT
  • 在ggplot2中,箱线图线的末尾代表什么?

    我找不到箱线图线条端点代表什么的描述 For example here are point values above and below where the lines end 我意识到盒子的顶部和底部是第 25 个和第 75 个百分位数
  • 删除pandas中某个字符串之后的行

    我想删除包含字符串 End of the 4th Quarter 的行之后的所有行 目前 这是第 474 行 但它会根据游戏而变化 from bs4 import BeautifulSoup import requests import p
  • 如何将缺失值插入到 Julia 的数据框中

    df3 10 A missing df3 15 B missing df3 15 C missing 即使 NA 也不起作用 我收到错误 方法错误 不能convertMissings Missing 类型的对象到 Int64 类型的对象 这
  • 使用 R Markdown 文档作为函数源

    我正在研究 R Markdown 来记录我经常使用的功能 我会将它们放入 R Markdown 文件中以记录它们 然后如果我几个月后回来查看它 就能够阅读我在函数背后的想法 我的问题是 如果我开始一个新的 R 项目 是否可以获取 r mar
  • 如何不显示 ggplot 轴上的所有标签?

    I m trying to using ggplot2 to plot this But as you can see on the x axis you can t read anything 那么如何在 x 轴上显示每 10 年的值呢
  • 如何创建 highcharter 事件函数以在 Shiny R 中创建“下拉函数”

    我正在建造一个shiny应用程序 我想要完成的事情之一是创建一个下拉菜单 我想将劳动力变量绘制为不同级别的年份变量的函数 请参阅下面的示例数据框 year level 2 level 3 labour 1 2013 10 101 1 2 2
  • ggplot 按因子和梯度颜色

    我正在尝试绘制一个对两个变量 一个因子和一个强度 进行着色的图 我希望每个因素都是不同的颜色 并且我希望强度是白色和该颜色之间的渐变 到目前为止 我已经使用了诸如对因子进行分面等技术 将颜色设置为两个变量之间的相互作用 并将颜色设置为因子并
  • 解压 R 数据框中的列表

    我有一个dataframe其中一个字段包含不同长度的列表 我想将该字段中列表的每个元素提取到其自己的字段中 以便我可以将结果收集到一个很长的字段中dataframe每个列表元素都有一个 id 这是一个例子dataframe dat lt s

随机推荐

  • 请求的资源上不存在“Access-Control-Allow-Origin”标头 + 响应的 HTTP 状态代码为 401

    XMLHttpRequest 无法加载http 192 168 1 253 8080 不 请求中存在 Access Control Allow Origin 标头 资源 起源 http 本地主机 4200 因此不允许 使用权 响应的 HTT
  • 如何在使用 bash 脚本初始化的 java 应用程序中捕获信号

    我使用以下代码在 java 中捕获 INT 信号 Signal handle new Signal INT new SignalHandler public void handle Signal sig log warn Received
  • 如何以编程方式关闭 Android Spinner 下拉列表

    我有一个场景 我在我的应用程序中使用微调器 制作的微调器下拉列表可以使用 performclick 方法直接打开 下拉列表打开 有没有一种方法可以自动关闭它或自动单击下拉列表中的项目 以便关闭下拉列表 Borg8 的答案是唯一有效的解决方案
  • 如何将 Windows 身份验证和 JWT 与 .Net Core 2.1 结合起来

    我尝试将 Windows 身份验证和 JWT 与 NET Core 2 1 一起使用 我有以下身份验证启动设置 services AddAuthentication options gt options DefaultAuthenticat
  • Flash中的循环缓冲区

    我需要将不同长度的项目存储在闪存芯片的循环队列中 每个项目都有其封装 这样我就可以弄清楚它有多大以及下一个项目从哪里开始 当缓冲区中有足够的项目时 它将换行到开头 在闪存芯片中存储循环队列的好方法是什么 我可能想存储数以万计的物品 因此 从
  • 如何配置xampp发送电子邮件

    我知道这是网站上的其他地方 但由于某种原因 我在这里找到的答案仍然没有帮助 在尝试了一整天不同的事情后 我仍然无法让它工作 我的目标是将确认码发送到用户输入的电子邮件中 我只了解少量的 PHP 并遵循了登录 注册系统的教程 但我相当确定 p
  • 使表格单元格中的链接填充整个行高

    我有一个数据表 每个单元格都是一个链接 我想允许用户单击表格单元格中的任意位置并让他们点击链接 有时表格单元格不止一行 但并非总是如此 我使用 td a display block 来获取覆盖大部分单元格的链接 当一行中的一个单元格为两行而
  • 为什么子类已经重写了父类的静态方法?

    当静态方法在子类中被重写时 我对静态方法的行为感到困惑 下面是代码 public class SuperClass public static void staticMethod System out println SuperClass
  • 从 LightGBM 模型访问树和节点

    在sci kit learn中 可以访问整个树结构 即树的每个节点 这允许探索树的每个分割所使用的属性以及用于测试的值 The binary tree structure has 5 nodes and has the following
  • 如果 [super init] 返回 nil 该怎么办?

    以下面代码为例 id init self super init if self code return self 我不希望 nil 向上传播调用层次结构 我最初的想法是在 self 为零的情况下抛出异常 创建一个还原点并中止执行 更好的想法
  • 如何通过 Apps 脚本在 Google 表格中“清除格式”

    在我的 Google 表格中 我目前通过手动访问来删除格式Format gt Clear Formatting 如何以编程方式 通过 Apps 脚本 清除 Google 表格的行和 或列中可能存在的任何 所有格式 澄清 我知道文本类具有格式
  • F# 库中是否存在 tee 函数?

    或者在 FSharpx 中 let tee sideEffect fun x gt do sideEffect x x 用法可能是这样的 f gt gt tee printfn F returned A gt gt g gt gt h 或者
  • 为 SwiftUI Apple Watch 应用实现基于页面的导航

    我正在 SwiftUI 中构建一个 Apple Watch 应用程序 并希望实现基于页面的导航 以便当用户在主屏幕上向左滑动时 他们会被带到另一个视图 我了解如何使用 NavigationLink 让用户从一个屏幕移动到另一个屏幕 但不知道
  • 使用 AJP / Tomcat 6.0 设置最大 HTTP 标头大小

    如果您不使用 AJP Tomcat 6 0 Connectors 有一个不错的选择maxHttpHeaderSize属性在server xml 但如果您使用 AJP 则无法理解该属性 如果您正在编写使用 AJP 的应用程序 有什么方法可以增
  • 如何 JSON 序列化 Django 模型的 __dict__ ?

    我想在 Django 中序列化单个模型的值 因为我想用get values 不可用 然而 我读到在 Google 网上论坛上您可以使用以下方式访问值 dict from django http import HttpResponse Htt
  • 从cmd调用Windows 7中的通知气球消息?

    我需要在 Windows 7 中从命令提示符使用自定义文本创建通知气球消息 我搜索了Google并找到了shell32 Notifu 是一个免费的开源 Windows 程序 它使气球出现在系统托盘中 并包含您指定的自定义文本 您可以从命令行
  • 使用内联表单中的额外字段 - save_model、save_formset,无法理解差异

    假设我处于通常的情况下 多对多关系中有额外的字段 class Person models Model name models CharField max length 128 class Group models Model name mo
  • 暂停 Shiny 中的活动安排

    我有一个应用程序 有两个observeEvent 处理程序对输入A 和输入B 做出反应并执行一些操作 事件 A 的内容之一是更新输入 B shinyApp ui fluidPage selectInput A Input A c 1 5 s
  • schema.org 的使用如何符合关联数据原则?

    我开始学习 schema org 模式 我来自 RDF OWL 社区 令我惊讶的是 我确实找不到 schema org 的 RDFS 或 OWL 词汇表示 更具体地说 我意识到这只是一个描述架构的 HTML 页面 我还找到了该架构的 RDF
  • 将第一行添加到空 data.frame 时,行号不同(NA 与 1)

    我想了解为什么这两种索引空的方法data frame导致NA分配给第一行的行号only 方法一 df lt data frame Number numeric Text character stringsAsFactors FALSE df