运算符 == 与 data.table 中的逻辑列不一致

2024-04-11

请参阅以下可重现的示例:

library(data.table)
set.seed(123)
DT <- data.table(A=rep(0.3,10000))
DT[, B := runif(.N) < A]
DT[B == T, .N]
# [1] 3005
DT[, summary(B)]
#    Mode   FALSE    TRUE    NA's
# logical    6995    3005       0

一切看起来都很好,并且两种方法的“TRUE”值的计数是相同的。现在将 B 列替换为新的。

DT[, B := runif(.N) < A]
DT[B == T, .N]
# [1] 3331
DT[, summary(B)]
#    Mode   FALSE    TRUE    NA's
# logical    6981    3019       0 

B 列中“T”的计数不同!它是同一列,但一种方法给出 3331 个“TRUE”值,另一种方法给出 3019 个。

当 == 被绕过时

DT[B != F, .N]
# [1] 3019
DT[, summary(B)]
#    Mode   FALSE    TRUE    NA's
# logical    6981    3019       0 

哪一个又是正确的

我可以在 Windows 8.1 x64 上使用 data.table v1.94 和 1.9.5 重现它。


这是一个更容易重现的示例,无需runif().

require(data.table) ## 1.9.4+
DT = data.table(x = 1:5)
DT[, y := x <= 2L]
#    x     y
# 1: 1  TRUE
# 2: 2  TRUE
# 3: 3 FALSE
# 4: 4 FALSE
# 5: 5 FALSE

DT[y == TRUE, .N]
# [1] 2             <~~~~~~ correct result.

DT[, y := x <= 3L]
#    x     y
# 1: 1  TRUE
# 2: 2  TRUE
# 3: 3  TRUE
# 4: 4 FALSE
# 5: 5 FALSE

DT[y == TRUE, .N]
# [1] 2             <~~~~~~ incorrect result, should be 3!

现在固定在v1.9.5 https://github.com/Rdatatable/data.table/wiki/Installation在 GitHub 上。

:= and set*现在删除辅助键(v1.9.4 中的新功能),以便DT[x==y]后再次工作:= or set*不需要options(datatable.auto.index=FALSE). Only setkey()正确地删除了辅助键。添加了 23 个测试。感谢user36312的举报,#885 https://github.com/Rdatatable/data.table/issues/885.

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

运算符 == 与 data.table 中的逻辑列不一致 的相关文章

  • 如何使用 dplyr 的 filter() 和 R-base 的 ifelse() 过滤数据框?

    我的数据框df看起来像这样 Home Away Inning Boston NYC Top NYC Boston Bottom NYC Boston Top 我想使用 dplyr 的filter 制作一个数据框 从ifelse query
  • 如何在 R 中解析年份+周数?

    有没有一种好方法可以将年 周数转换为R中的日期 我已经尝试过以下方法 gt as POSIXct 2008 41 format Y U 1 2008 02 21 EST gt as POSIXct 2008 42 format Y U 1
  • 具有重复值的两个向量之间的“设置差异”

    我有 3 个向量 x lt c 1 3 5 7 3 8 y lt c 3 5 7 z lt c 3 3 8 我想找到以下元素x那些不在y并且不在z 有没有一个功能f这会给我以下输出 gt f x y 1 3 8 gt f x z 1 5 7
  • 将多个绘图合并为 gif

    我正在尝试使用 caTools 包将多个绘图组合成一个 gif 我的基本代码如下所示 for i in 1 100 plot plots few points and lines changes slightly with each i 我
  • 只保留矩阵中某些列具有相同元素的行

    让我举个例子 假设我们有 3 个表 重点关注 N 列 Table 1 Table 2 Table 3 N Values N Values N Values 5 1 5 1 5 1 10 2 6 2 6 21 15 3 10 3 10 5 1
  • AWS DynamoDB 的 r 语言支持 [重复]

    这个问题在这里已经有答案了 这是对此的后续 更新问题 AWS dynamodb 支持 R 编程语言 https stackoverflow com questions 14224919 aws dynamodb support for r
  • 如何识别数据集中其他列之和的列

    我想编写一个函数 最好用 R 语言 但也欢迎其他语言 它可以识别数据集中列之间的关系 仅限于加法 减法 其实际应用是在大型多列财务数据集上运行它 其中某些列是其他列的小计 并识别此类小计 理想情况下 我希望允许一些小的差异 例如允许舍入问题
  • R 中的闭包类似于 Python

    首先考虑以下 Python 代码 该代码计算函数被调用的次数 def counter fn count 0 def inner args kwargs nonlocal count count 1 print Function 0 was
  • 如何从闪亮模块调用闪亮模块?

    如何从闪亮模块中调用闪亮模块并传递第一个模块中的选择 作为一个例子 我编写了一个应用程序来显示星球大战主题dplyr在 DT data 表中 模块StarWars 来自同一数据集的相关电影应显示在另一个子选项卡 模块电影 的另一个 DT d
  • 如何在Shiny中默认选择verbatimTextOutput中的文本?

    这是与我之前的问题相关的问题 是否可以有固定宽度的 verbatimTextOutput 并让文本在 Shiny 中换行 https stackoverflow com q 58516071 7669809 我有以下闪亮的应用程序 http
  • 在 R 中提取模式/分隔符之间的字符串

    我的变量名称格式如下 PP Sample 12 GT or PP Sample 17 GT 我正在尝试使用字符串拆分来 grep 出中间部分 即Sample 12 or Sample 17 但是 当我这样做时 IDtmp lt sapply
  • 按月/年间隔汇总每日数据

    我并不经常需要在 R 中处理日期 但我认为这相当简单 我有一列代表数据框中的日期 我只想创建一个新的数据框 使用日期按月 年总结第二列 最好的方法是什么 我想要第二个数据框 这样我就可以将它提供给绘图 您能提供的任何帮助将不胜感激 编辑 供
  • 对列表中的每个数值列表求和

    我想将值附加到 R 中河图中的标签 我有一个值列表列表 需要它来显示节点之间的流 如下所示 edges lt list A list C 10 E 5 B list C 10 C list D 13 E 7 我知道有一个函数可以减少 或求和
  • 在 R 中将列表列表转换为数据帧:Tidyverse 方式

    我正在寻找将列表列表转换为 R 中的数据帧的 Tidyverse 方法 Create a list of lists a lt seq 1 10 1 b lt seq 1 20 2 Function to calculate the sum
  • 在字符串中每个字母后面添加数字

    我有几个具有固定格式的字符串 格式为一个字母后跟一个数字 例如 A3B1C7D1 但是 如果字母后面的数字为 1 则字符串将写为 A3BC7D 我想做的是插入数字 1 然后将字符串转换为A3BC7D to A3B1C7D1 我的示例数据是
  • 如何选择独特点

    我是一名 R 程序员新手 我有以下一系列观点 df lt data frame x c 1 2 3 4 y c 6 3 7 5 df lt df gt mutate k 1 df lt df gt full join df by k df
  • R 控制台是我的母语,如何将 R 设置为英语?

    我在 Windows 7 上使用 R 显然 R 不知何故发现了我说英语以外的语言的证据 并且顽固地坚持在控制台中以我自己的语言提供输出 由于多种原因 这是不可取的 我希望 R 是英语 什么有效 我能够使用LANGUAGE en作为 R 控制
  • 在 R 中使用 randomforest() 进行分类?

    我最初有一个由 N 行 12 列组成的数据框 最后一列是我的班级 0 或 1 我必须将整个数据框转换为数字 training lt sapply training temp as numeric 但后来我认为我需要将类列作为因子列来使用 r
  • 在 ggplot2 中,如何将堆叠直方图中的小值条形组合在一起?

    示例数据 tmp df lt data frame a rnorm 100 0 1 b rnorm 100 0 5 1 c rnorm 100 0 5 1 d rnorm 100 1 1 e rnorm 100 1 1 gt tidyr g
  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col

随机推荐

  • 描述时间序列 pandas 中的间隙

    我正在尝试编写一个函数 该函数采用连续的时间序列并返回一个数据结构 该数据结构描述数据中任何缺失的间隙 例如带有 开始 和 结束 列的 DF 对于时间序列来说 这似乎是一个相当常见的问题 但是尽管使用了 groupby diff 等 并进行
  • CSS 通过舷窗查看

    我正在尝试使用 CSS 创建一个 舷窗 当我说舷窗时 我的意思是使屏幕的一部分透明 这样您就可以看到舷窗后面的任何内容 仅此而已 我能够通过将主体的背景颜色设置为与前景色相同 然后使用具有圆形渐变的舷窗图像来获得我想要的效果 中间为白色 边
  • Visual Studio 2010 - 半透明浮动窗口

    是否可以在 Visual Studio 2010 中使浮动窗口半透明 我希望能够浮动编辑器窗口并降低其 Alpha 级别 可以使用修改股票编辑器窗口的扩展来创建此功能吗 如果不是扩展 是否有合适的第三方应用程序能够修改 Visual Stu
  • Android进度条嵌入在ui中而不是对话框中

    有没有一种方法可以在不使用对话框的情况下将进度条嵌入到 UI 中 不是以编程方式 而是使用布局 xml 文件 我猜它必须是某种动画或 可绘制 您可以使用ProgressBar widget
  • scala.ScalaReflectionException: 不是一个术语

    我在 Spark 中有以下代码 rdd map processFunction saveToCassandra keyspace tableName Where def processFunction src String Seq Any
  • 获取令牌身份验证视图时出现 Django REST HTTP 400 错误

    我想在后端使用 Django 和 Django REST 框架来对本机 android 应用程序上的用户进行身份验证 我目前正在使用基于令牌的身份验证系统 更多细节 http www django rest framework org ap
  • 将 webmock 与黄瓜一起使用

    我正在使用 webmock 但它不适用于黄瓜测试 在我的 Gemfile 中 gem vcr gem webmock 在我的 features support env rb 中 我有 require webmock cucumber Web
  • 为什么我无法将边框应用到有角度的垫表行?

    我有一个简单的角度材料表 table table
  • 如何将 raku -e 和 -n 与多个文件 glob 一起使用

    我想在 Windows 上的 raku 中执行以下操作 raku n e say if mydatabegin file 无法打开文件 C file 参数无效 glob 不被解释为 glob 我认为这是因为 Windows 要求你的程序自己
  • 将整数静态转换为指针类型

    我只是不知道如何在 C 中编译这个简单的示例 class C public static const void noop static cast
  • node-sass-middleware 只提供一次 css 文件

    我使用 Jade 和 Sass 制作了一个非常简单的 Express 网站 但是我的 node sass 中间件遇到了问题 我的服务器只提供一次 CSS 文件 然后为每个后续请求返回 404 我必须重新启动服务器才能暂时修复它 这是我的代码
  • 在 WPF 动画中,将属性 BeginTime 设置为静态资源

    我想要做的是使用资源定义我的动画的所有开始时间 例如 我想要
  • 重写问题 - L(ast) 不被尊重?

    所以我正在为一个网站开发 CSS JS 压缩系统 该系统基本上具有以下 htaccess RewriteEngine On RewriteRule css images images site 1 QUERY STRING L Rewrit
  • 多线程应用程序中的异常。

    我从一位非常有洞察力的人那里听说 线程中抛出 而不是捕获 的异常正在传播到父线程 真的吗 我尝试过类似的操作 但无法捕获创建线程中的异常 static void Main string args ParameterizedThreadSta
  • MySQL 5.7 innoDB集群中的一个节点崩溃并且无法将崩溃的节点重新加入集群

    我们的一个环境中有一个 MySQL innodb 集群 集群中的一个节点崩溃了 虽然我们能够使崩溃的节点联机 但无法将其加入集群 有人可以帮助恢复 恢复节点并将其加入集群吗 我们尝试使用 dba rebootClusterFromCompl
  • SMTP 客户端在本地主机上发送消息失败,在远程主机上成功

    我有一个小型 tcp 服务器 除其他外 还用于通过 SMTP 服务器发送邮件 问题是 当我在开发计算机 到 smtp 服务器的远程连接 上运行它时它可以正常工作 但是当我在与 SMTP 服务器 Windows Server 2008 R2
  • 本地语句输出与调用命令输出非常不同

    直接登录到系统 我运行此语句 并得到以下输出 Get ClusterNetwork cluster backups role None 这是完美的 甚至美丽 因为它的简单 然而 当我使用 invoke command 从远程计算机运行完全相
  • chrome 72 更改了源映射行为

    我正在为 Chrome 开发一个 Webextension 代码是用 Typescript 编写的 所以我需要源映射 该扩展与 ParcelJS 捆绑在一起 但我相信我的问题与捆绑器无关 从 Chrome 70 更新到 72 后 源映射不再
  • 限制用户从“主要区域”Dynamics 365 on Prem 进行访问

    我们创建了一个新的 应用程序 这是我们解决方案中迄今为止的第一个应用程序 这个想法是 一组用户将只能访问该应用程序 而他们将无法再访问该应用程序的 主要区域 某些实体的某些表格看起来与其他实体不同等 主要区域 是指默认情况下或多或少存在的
  • 运算符 == 与 data.table 中的逻辑列不一致

    请参阅以下可重现的示例 library data table set seed 123 DT lt data table A rep 0 3 10000 DT B runif N lt A DT B T N 1 3005 DT summar