R和JavaScript中的特殊值

R和JavaScript中的特殊值

Posted by Chunfu Shawn on 2022/07/15
Last Updated by Chunfu Shawn on 2022/07/15

R中的Inf、NA、NaN和NULL

1. Inf

R中的无穷大用Inf表示(即Infinity,无穷大),负无穷表示为-Inf
要检查一个数是否为无穷,可以使用is.finite()或者is.infinite()函数。

1
2
3
4
5
6
7
> 1/0
[1] Inf
> -1/0
[1] -Inf
#Inf可以参与运算
> 2/Inf
[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
2
3
> a <- c(1, 2, 3, 4)
> a[1:5]
[1] 1 2 3 4 NA

3. NaN

R中的无定义数用NaN表示,即“Not a Number(非数)”,是double型缺失值
不过在R中,R实际上是把NaN视作一个数的,当其参与运算时,返回结果总是NaN。我们可以使用is.nan()函数来检测计算结果有无定义,但是需要注意的是,对于NaN而言,is.finite()和is.infinite()都会返回FALSE。

1
2
3
4
5
6
> 0/0
[1] NaN
> Inf - Inf
[1] NaN
> Inf / Inf
[1] NaN

4. NULL

R语言中的一个特殊值NULL,NA代表位置上的值为空,NULL代表连位置都没有,表明“空无一物”。

(1)一般常用在函数参数中,表示该参数没有被赋予任何值;

(2)也经常用在初始化变量,表示变量没有任何内容,因此它的长度为0,如c()没有自变量时返回值就是NULL

1
2
3
4
5
> a <- NULL
> a
NULL
> length(a)
[1] 0

总结:

这四个特殊值从前到后逐渐变得无任何意义,例如:Inf是个数,且可以运算,不算作缺失值;NA是缺失值,没有数值但具有多种数据类型;NaN也是缺失值,但只有double类型;而NULL表示不存在,连内存位置都没有。

JavaScript中的NaN、null、undefined

1. NaN 非数值

数据类型:

1
2
> typeof(NaN)
'number'

产生原因:js尝试把一些非数值数据当做数值处理,无法得到数值时返回值就是NaN

1
2
3
4
5
6
> var a;
> var b=1;
> if(a==undefined){
console.log(a+b);
}
NaN

2. null 空值

数据类型:

1
2
> typeof(null)
'object'

产生原因:null表示变量值为空,可以通过将null赋给变量来清空变量。或者想定义一个变量,又不确定其值的时候,就可以把null赋给变量

3. undefined 未定义

数据类型:

1
2
typeof(undefined)
'undefined'

产生原因:undefined不是关键字,而是预定义的全局变量。当某个变量已经在语句中使用了,但却没有被赋予任何值时,它的值不是0或null,而是undefined,表示javascript不能识别它

1
2
3
> var aa;
> console.log(aa);
undefined

还需要注意的是,NaN和任何数据都不相等,包括NaN本身,其他数据类型和NaN运算的结果都是NaN。