r - data.table ':' 中的 nomatch 未正确更新

标签 r data.table

我正在使用数据,表 1.9.4 和 R 3.1.2 平台:x86_64-pc-linux-gnu(64 位)。 ':=' 功能中的 nomatch 参数似乎不起作用。以下是示例代码

library(data.table)
options(datatable.nomatch=0)
dt1 = data.table(
        a=c(rep(1, 2), rep(2, 2), 3),
        b=c(1:2, 1:2,1),
        c=101:105)
setkey(dt1, a, b)
dt1

dtw = data.table(a=c(1,3), w1=c(201, 203), w2=c(301,303))
setkey(dtw, a)
dtw

dt1[dtw, ':='(w1=i.w1, w2=i.w2)]
dt1

它在 w1 和 w2 列中返回 NA 而不是 0。

   a b   c  w1  w2
1: 1 1 101 201 301
2: 1 2 102 201 301
3: 2 1 103  NA  NA
4: 2 2 104  NA  NA
5: 3 1 105 203 303

正确的输出应该是

   a b   c  w1  w2
1: 1 1 101 201 301
2: 1 2 102 201 301
3: 2 1 103   0   0
4: 2 2 104   0   0
5: 3 1 105 203 303

我做错了什么以及如何得到 0 而不是 NA?

最佳答案

如评论中所述,您误解了当前的 nomatch 行为,nomatch=0 未填充 0
不确定 nomatch 是否会影响 :=。它用于不带 := 的连接,以指示它应该是内部 还是外部 连接。
请注意 nomatch 行为可能会在 2.0.0 中发生变化 - 相当遥远的 future ,因为它是从现在开始的 4 个稳定版本。
作为引用,留下当前关于该更改的讨论 #857 .

关于r - data.table ':' 中的 nomatch 未正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29091709/

相关文章:

R data.table 根据组选择一组列以获得最大值

r - data.table 列子集返回 0 行

r - 打印时使用浆糊

r - 无法从 CRAN 安装 xgboost

r - Stata 中的 R 命令 "source"相当于什么?

R data.table 将 NA 替换为数字列的平均值和标称值的最常见值

r - 优雅地更新多个 data.table 列

将 ggplot 中的图例大小减小到超出默认大小

r - 在 R 中使用 data.table 取消嵌套多列

r - 如何对 data.table 列重新排序?