测试 Vector 与下标 R 中的 NA 是否相等

问题描述 投票:0回答:1

我在 R 中发现了一个奇怪的行为,想问一下它是否会导致问题。 这是我的意思的一个例子:

x<-c(1,2,3,4,NA, 5)
x==1
x

返回:

TRUE FALSE FALSE FALSE    NA FALSE

现在假设我想将所有 x==1 更改为 100:

x[x==1]<-100
x

返回:

100   2   3   4  NA   5

因此,出于某种原因,用带有 NA 的逻辑向量引用 x 是有效的。为什么? 对我来说,这种“==”与 NA 的行为没有多大意义。 我现在也担心这种赋值x[x==y]<-... may have caused (unnoticed) problems with other types of vectors such as in data.frames or matrices. Has anyone encountered any problems with this or does this logical NA referencing work consistently with other types of vectors?

r equality
1个回答
0
投票

根据

?NA
,NA 是一个逻辑值,如
TRUE
FALSE
。当使用逻辑子集时,期望逻辑值是合理的。此外,帮助指出

逻辑计算将

NA
视为缺失的
TRUE
/
FALSE
值,因此如果表达式不依赖于
TRUE
操作数,则可能返回
FALSE
NA

在您的情况下,

x[x==1]
不依赖于
NA
,并且不会为
TRUE
返回
NA
,所以它是安全的。如果您特别想在执行复合操作之前识别
NA
,可能会出现问题,这些操作可能会返回
TRUE
(如 (
NA_real_||TRUE
)),在这种情况下,您应该首先测试它们/删除它们。

© www.soinside.com 2019 - 2024. All rights reserved.