我只想让一个函数对数据中的行求和.使用by参数覆盖旧值.通常情况下,我希望在所有行中得到by个相同的结果.我创建了两个示例.第一个和第二个的唯一区别是删除了take列数据中的前3位.桌子第一个示例按预期工作,第二个示例显示了一些意外行为.我很乐意得到任何关于我做错了什么的暗示.

R版本:4.0.4

数据表版本:1.14.2

library(data.table)

# my expected function
superpose <- function(DT){
  DT <- copy(DT)
  DT[, value := sum(value), by = take]
}

v1a = c(   55:   59,    33:   37,    54:   56,    32:   34,    58:   60,    36:   38)
v1b = c(25555:25559, 20533:20537, 25554:25556, 20532:20534, 25558:25560, 20536:20538)
all.equal(as.integer(factor(v1a)), as.integer(factor(v1b)))
# [1] TRUE

v2 = 1:22

data1 <- data.table(take = v1a, value = v2) # 1st data - expected behavior
data2 <- data.table(take = v1b, value = v2) # 2nd data - unexpected behavior

res1 <- superpose(data1)
res2 <- superpose(data2)

cbind(res1, res2)
which(res1[, value] != res2[, value])
# [1]  8 11 15 16 19 20 21 22

推荐答案

github上已经有一个与data.table 1.14.3年的这个bug相关的open issue.这一问题现已在最新的开发版本中得到解决,可通过以下方式安装:

update.dev.pkg()

这是一个关于为什么只有勇敢的人才应该使用开发代码的警示故事——如果你这样做,可能会出现问题.

R相关问答推荐

R中的Fasttext langue_identification返回太多参数-如何与文本匹配?

插入指示行之间时间间隔的新行

通过Plotly绘制线串几何形状的3D图

R -模运算后的加法

使用gcuminc,如何使用逗号格式化风险表?

derrr mutate case_when grepl不能在R中正确返回值

使用整齐的计算(curl -curl )和杂音

将文件保存到新文件夹时,切换r设置以不必创建目录

如何读取CSV的特定列时,给定标题作为向量

无法定义沿边轨迹的 colored颜色 渐变(与值无关)

从多个线性回归模型中提取系数

从服务器在Shiny中一起渲染图标和文本

更新R中的数据表(使用data.table)

从多层嵌套列表构建Tibble?

自动STAT_SUMMARY统计与手动标准误差之间的差异

在点图上绘制置信度或预测区间ggplot2

如何计算每12行的平均数?

如果条件匹配,则使用Mariate粘贴列名

如何在刻面和翻转堆叠条形图中对齐geom_text()

以R表示的NaN值的IS.NA状态