Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
%在%vs==中,R中的NA比较语义_R_Types - Fatal编程技术网

%在%vs==中,R中的NA比较语义

%在%vs==中,R中的NA比较语义,r,types,R,Types,当我使用=将一个数字与R中的NA进行比较时,这将产生NA > 1==NA [1] NA 但是,如果我在% > 1 %in% c(NA) [1] FALSE 这是怎么回事?%in%不是在幕后使用了=吗?关于比较运算符=,它处理NA如下: 缺失值(NA)和NaN值被认为是不可比的,甚至与它们本身不可比,因此涉及它们的比较总是会导致NA。比较字符串时,如果其中一个字符串在当前排序规则区域设置中无效,也会导致缺少值。(请参见?`=`) 通过?`%in%`我们了解到: 确切地说,在某种程度

当我使用
=
将一个数字与R中的
NA
进行比较时,这将产生
NA

> 1==NA
[1] NA
但是,如果我在%

> 1 %in% c(NA)
[1] FALSE

这是怎么回事?
%in%
不是在幕后使用了
=
吗?

关于比较运算符
=
,它处理
NA
如下:

缺失值(NA)和NaN值被认为是不可比的,甚至与它们本身不可比,因此涉及它们的比较总是会导致NA。比较字符串时,如果其中一个字符串在当前排序规则区域设置中无效,也会导致缺少值。(请参见
?`=`

通过
?`%in%`
我们了解到:

确切地说,在某种程度上,什么与什么相匹配是一个定义问题。对于所有类型,NA与NA匹配,没有其他值。对于实值和复值,NaN值被视为匹配任何其他NaN值,但不匹配NA

%in%从不返回NA,这使得它在if条件下特别有用

这是因为(正如@akrun在评论中指出的那样)

%中的
%为
目前定义为
“%in%”0


关于比较运算符
==
,它处理
NA
,如下所示:

缺失值(NA)和NaN值被认为是不可比的,甚至与它们本身不可比,因此涉及它们的比较总是会导致NA。比较字符串时,如果其中一个字符串在当前排序规则区域设置中无效,也会导致缺少值。(请参见
?`=`

通过
?`%in%`
我们了解到:

确切地说,在某种程度上,什么与什么相匹配是一个定义问题。对于所有类型,NA与NA匹配,没有其他值。对于实值和复值,NaN值被视为匹配任何其他NaN值,但不匹配NA

%in%从不返回NA,这使得它在if条件下特别有用

这是因为(正如@akrun在评论中指出的那样)

%
中的
%为
目前定义为
“%in%”0


如果您检查功能,它正在执行
match
match(x,table,nomatch=0L)>0L
如果您检查功能,它正在执行
match
match(x,table,nomatch=0L)>0L