7
Có tương đương với ==
nhưng với kết quả là x != NA
nếu x
không phải là NA
?R Bình đẳng trong khi bỏ qua NA
Sau đây những gì tôi muốn, nhưng đó là phiền phức:
mapply(identical, vec1, vec2)
Có tương đương với ==
nhưng với kết quả là x != NA
nếu x
không phải là NA
?R Bình đẳng trong khi bỏ qua NA
Sau đây những gì tôi muốn, nhưng đó là phiền phức:
mapply(identical, vec1, vec2)
1 == NA
trả về một logic NA
hơn TRUE
hoặc FALSE
. Nếu bạn muốn gọi NA
FALSE
, bạn có thể thêm một điều kiện thứ hai:
set.seed(1)
x <- 1:10
x[4] <- NA
y <- sample(1:10, 10)
x <= y
# [1] TRUE TRUE TRUE NA FALSE TRUE TRUE FALSE TRUE FALSE
x <= y & !is.na(x)
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE
Bạn cũng có thể sử dụng một bước xử lý thứ hai để chuyển đổi tất cả các giá trị từ NA
kiểm tra bình đẳng của bạn để FALSE
.
foo <- x <= y
foo[is.na(foo)] <- FALSE
foo
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE
Ngoài ra, cho những gì giá trị của nó, NA == NA
lợi nhuận NA
cũng như NA != NA
.
Thật khó chịu khi phải làm một VÀ, nhưng tôi đoán nếu không có cách nào tốt hơn. – Xodarap
Làm thế nào? Những gì bạn sẽ đề xuất thay thế? 'NA' hoạt động theo một cách đặc biệt (do đó,' NULL') vì những lý do rất quan trọng! – Justin
Tôi nhận ra hành vi của '== 'là có giá trị, nhưng tôi ước có một toán tử' ==' 'hoạt động như thế nào tôi muốn. (R không cho phép các toán tử do người dùng định nghĩa, đúng không?) – Xodarap