R中的Inf、NA、NaN和NULL
1. Inf
R中的无穷大用Inf
表示(即Infinity,无穷大),负无穷表示为-Inf
。
要检查一个数是否为无穷,可以使用is.finite()或者is.infinite()函数。
1 | > 1/0 |
2. NA
**NA
表示缺失值,即“Missing value”,是“not available”的缩写,NA
表示逻辑型缺失值,是有类型的(integer、double、logical、character等),**
NA
表示存在但是未知,数据库管理系统中的NULL值相当于R中的NA值。
NA_integer_
是整数型缺失值, NA_real_
是double型缺失值, NA_character_
是字符型缺失值。
1 | > a <- c(1, 2, 3, 4) |
3. NaN
R中的无定义数用NaN表示,即“Not a Number(非数)”,是double型缺失值
不过在R中,R实际上是把NaN视作一个数的,当其参与运算时,返回结果总是NaN。我们可以使用is.nan()
函数来检测计算结果有无定义,但是需要注意的是,对于NaN而言,is.finite()和is.infinite()都会返回FALSE。
1 | > 0/0 |
4. NULL
R语言中的一个特殊值NULL
,NA代表位置上的值为空,NULL代表连位置都没有,表明“空无一物”。
(1)一般常用在函数参数中,表示该参数没有被赋予任何值;
(2)也经常用在初始化变量,表示变量没有任何内容,因此它的长度为0,如c()
没有自变量时返回值就是NULL
。
1 | > a <- NULL |
总结:
这四个特殊值从前到后逐渐变得无任何意义,例如:Inf
是个数,且可以运算,不算作缺失值;NA
是缺失值,没有数值但具有多种数据类型;NaN
也是缺失值,但只有double类型;而NULL
表示不存在,连内存位置都没有。
JavaScript中的NaN、null、undefined
1. NaN 非数值
数据类型:
1 | > typeof(NaN) |
产生原因:js尝试把一些非数值数据当做数值处理,无法得到数值时返回值就是NaN
1 | > var a; |
2. null 空值
数据类型:
1 | > typeof(null) |
产生原因:null表示变量值为空,可以通过将null赋给变量来清空变量。或者想定义一个变量,又不确定其值的时候,就可以把null赋给变量
3. undefined 未定义
数据类型:
1 | typeof(undefined) |
产生原因:undefined不是关键字,而是预定义的全局变量。当某个变量已经在语句中使用了,但却没有被赋予任何值时,它的值不是0或null,而是undefined,表示javascript不能识别它
1 | > var aa; |
还需要注意的是,NaN和任何数据都不相等,包括NaN本身,其他数据类型和NaN运算的结果都是NaN。