gpt4 book ai didi

r - 引用行为不一致的data.table分配

转载 作者:行者123 更新时间:2023-12-03 22:41:23 24 4
gpt4 key购买 nike

当使用 data.table 通过引用分配时使用第二个 data.table 中的列,结果不一致。当两个data.table的键列都没有匹配时s,出现赋值表达式y := y被完全忽略——甚至 NA s 被退回。

library(data.table)
dt1 <- data.table(id = 1:2, x = 3:4, key = "id")
dt2 <- data.table(id = 3:4, y = 5:6, key = "id")
print(dt1[dt2, y := y])
## id x # Would have also expected column: y
## 1: 1 3 # NA
## 2: 2 4 # NA

但是,当存在部分匹配时,不匹配的列有一个占位符 NA .
dt2[, id := 2:3]
print(dt1[dt2, y := y])
## id x y
## 1: 1 3 NA # <-- placeholder NA here
## 2: 2 4 5

这对后面假设为 y 的代码造成严重破坏。列在所有情况下都存在。否则我不得不编写繁琐的额外检查来考虑这两种情况。

有没有解决这种不一致的优雅方法?

最佳答案

this recent commit ,本期,#759 , 现在已在 v1.9.7 中修复。当 nomatch=NA 时,它按预期工作。 (当前默认值)。

require(data.table)
dt1 <- data.table(id = 1:2, x = 3:4, key = "id")
dt2 <- data.table(id = 3:4, y = 5:6, key = "id")
dt1[dt2, y := y][]
# id x y
# 1: 1 3 NA
# 2: 2 4 NA

关于r - 引用行为不一致的data.table分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25145112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com