为什么我在'上使用'在data.table中可以使" NA"

时间:2017-08-25 08:10:28

标签: r data.table

首先,我制作一个data.table。

    set.seed(100)
    a <- data.table(x = sample(c(1:1000),100000,replace = TRUE),
                y = sample(letters,100000,replace = TRUE),
                z = 1:100000)

我使用一种方法a[x >= 900 & y == 'b', .N],结果是389。

然后我使用另一种方法a[.(c(900:max(x)),'b'), .N, on = .(x,y)],结果是394。

我发现第二种方法可以使NA&#39;

a[.(c(900:max(x)),'b'), on = .(x,y)][is.na(z)]

WHY ??

1 个答案:

答案 0 :(得分:3)

如果我们使用onSuccess,则NA元素将消失

nomatch=0

原因是我们将序列从900变为'{'的a[.(c(900:max(x)),'b'), .N, on = .(x,y), nomatch = 0] #[1] 389 值。所以缺少一些元素。例如

max

,当我们正在进行a[.(c(900:max(x)),'b'), on = .(x,y)][is.na(z)] # x y z #1: 948 b NA #2: 958 b NA #3: 975 b NA #4: 984 b NA #5: 986 b NA 加入时,会为{z'生成NA个元素。

原因是组合缺少这些元素

left