【发布时间】:2022-12-20 04:33:24
【问题描述】:
这是下面的后续问题。
How to extend `==` behavior to vectors that include NAs?
在链接中,假设我们想比较
a = c(1,2,NA)
b = c(1,3,NA)
使用"%==%" <- function(a, b) (!is.na(a) & !is.na(b) & a==b) | (is.na(a) & is.na(b))的函数,得到如下结果
a %==% b
# TRUE FALSE TRUE
我的问题是如何在data.table::data.table函数中使用%==%。为什么下面的代码不能正常工作?前两个结果还不错,但是好像%==%不能和操作一起使用,即下面的a+a2。
dt_a = data.table(a = a, a2 = a+a)
dt_a[,a %==% b]
# TRUE FALSE TRUE
dt_a[,a2 %==% b]
# FALSE FALSE TRUE
dt_a[,a+a2 %==% b]
# 1 2 NA # this line of result is confusing.
【问题讨论】:
标签: r data.table na logical-operators