r - 在 data.table 中求和返回 R 3 vs 4 中的不同值
问题描述
在 R 4.0.2 中使用 data.table 时,我遇到了一个奇怪的求和问题。当我按一列对数据进行分组并对另一列(bar[,.(C = sum(B)), by = A]
行)求和时,我得到了一些不正确的数字。这是一个我只加载data.table的reprex:
> library(data.table)
> bar <- data.table(data.frame("A" = as.character(c(1,2,3,2,3,2)), "B" = as.numeric(c(1,2,3,4,5,6))))
> bar
A B
1: 1 1
2: 2 2
3: 3 3
4: 2 4
5: 3 5
6: 2 6
> bar[,.(C = sum(B)), by = A]
A C
1: 1 2
2: 2 10
3: 3 8
> bar[A == 1, sum(B)]
[1] 1
> bar[A == 2, sum(B)]
[1] 12
> bar[A == 3, sum(B)]
[1] 8
> bar[,.(C = sum(as.integer(B))), by = A]
A C
1: 1 1
2: 2 12
3: 3 8
然而,如果我在 R 3.6.3 上执行此操作,一切都会按我的预期进行,并且上面有问题的部分现在看起来像:
> bar[,.(C = sum(B)), by = A]
A C
1: 1 1
2: 2 12
3: 3 8
其他一切都是一样的。
R 4.* 是否改变了一些数字求和的方法?为什么我先转换为整数时它是固定的?
解决方案
推荐阅读
- wordpress - Woocommerce 类别层次结构
- java - 如何将 Java String 转换为 Enum ConverterFactory 类到 Kotlin
- javascript - 使用 Jquery 触发对文本字段更改调用的事件
- r - R中geom_line顶部的geom_point覆盖
- python-3.x - 如何用 np 数组顺序替换选定的 pandas 数据帧行?
- c# - 从复选框中获取值并作为列表发布到控制器
- react-native - React Native - 如何创建 iPhone BedTime 拨号?
- php - 将 index.php 文件设置为仅显示一个类别的帖子
- spring - 在 Spring Boot 控制器中验证 Thymeleaf 的 th:object 中的输入
- php - 从服务器流式传输时 HEVC 无法在 Moto G4 Plus 中播放