我正在使用数据,表 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/