提问人:StanW 提问时间:12/22/2020 更新时间:7/25/2023 访问量:58
测试向量与下标 R 中的 NA 相等
Testing Vector for equality with NAs in subscripts R
问:
我在 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]<-...可能对其他类型的向量(例如在 Data.frames 或矩阵中)造成了(未被注意的)问题。有没有人遇到过任何问题,或者这个逻辑 NA 引用是否与其他类型的向量一致?
答:
0赞
Avraham
7/25/2023
#1
根据 ,NA 是一个逻辑值,如 和 。使用逻辑子集时,期望逻辑值是合理的。此外,帮助指出?NA
TRUE
FALSE
逻辑计算被视为缺失的 / 值,因此如果表达式不依赖于操作数,则可能会返回 OR。
NA
TRUE
FALSE
TRUE
FALSE
NA
在你的情况下,不依赖于 ,也不会返回 ,所以它是安全的。如果您特别想在执行复合操作之前识别 s,可能会有问题,这些操作可能会返回类似 () 的操作,在这种情况下,您应该首先测试它们/删除它们。x[x==1]
NA
TRUE
NA
NA
TRUE
NA_real_||TRUE
评论
%in%
==
NA
logical
NA
`[<-`
[<-
TRUE
FALSE
`[`
FALSE
TRUE