作者介绍:
杨光辉,R语言中文社区专栏作者,中科院近代物理研究所,科研工作者一枚。目前的研究方向是知识图谱。知乎专栏:R语言初级教程,个人公众号:
R语言和Python学堂。
这几个都是R语言里面的
特殊值
,都是R的
保留字
(reserved words)。它们的意义分别为:
NA:表示缺失值(Missing value),是“Not Available”的缩写
Inf:表示无穷大,是“Infinite”的缩写
NaN:表示非数值,是“Not a Number”的缩写
NULL:表示空值,即没有内容
下面通过一些例子来了解它们的用法。由于有关
NA
的内容较多,最后再介绍它。
1. Inf
我们知道,对于分数,当分母为
0
分子不为
0
时,结果为
无穷大
。当分子为正数时,结果为
正无穷大
;当分子为负数时,结果为
负无穷大
。在R中也是这样,比如:
> 2 / 0 ## 正无穷大
[1] Inf
> -2 / 0 ## 负无穷大
[1] -Inf
Inf
也可参与一些运算,比如:
> 2/Inf ## 当分子为有限值、分母无穷大时,结果为0
[1] 0
> exp(-Inf) ## 自然数e的负无穷大次幂为0
[1] 0
> (0:3)^Inf ## 0的穷大次幂为0;1的穷大次幂还为1;大于1的数的无穷大次幂为无穷大
[1] 0 1 Inf Inf
此外,在R中用
is.finite()
,
is.infinite()
来判断是否为无穷大数,比如:
> is.finite(2)
[1] TRUE
> is.infinite(2/0)
[1] TRUE
2. NaN
有些运算会导致结果为
非数值
,在R中用
NaN
来表示,比如:
> 0 / 0
[1] NaN
> Inf - Inf
[1] NaN
> Inf / Inf
[1] NaN
在R中,用
is.nan()
来判断是否为非数值,比如:
> is.nan(2)
[1] FALSE
> is.nan(NA) ## 缺失值NA不是非数值
[1] FALSE
> is.nan(0/0)
[1] TRUE
3. NULL
NULL
表示
空值
,表示没有内容。
一般常用在函数参数中,表示该参数没有被赋予任何值。也经常用在初始化变量,表示变量没有任何内容,因此它的长度为0。来看个例子:
> x <- NULL
[1] 0
> length(x)
[1] 0
> is.null(x) ## is.null()函数判断是否为空值
[1] TRUE
4. NA
NA
表示
缺失值
(Missing value),我们将会经常碰到这个值。
你可能想知道向量中是否有缺失值。对于这个问题,有人说用
==
关系运算符就行了,是这样吗?来看个例子:
> x <- c(2, 5, NA, 7, NA, 8)
> x == NA
[1] NA NA NA NA NA NA
> is.na(x) ## 正确姿势
[1] FALSE FALSE TRUE FALSE TRUE FALSE
显然用
==
不可行(为啥不行,仔细想想就明白),在R中可用
is.na()
函数来判断是否为缺失值
有时我们想
删除缺失值
或想
知道有多少个缺失值
,可以通过下面代码来实现:
> x[! is.na(x)] ## 删除缺失值
[1] 2 5 8
> sum(is.na(x)) ## 缺失值的个数
[1] 2
对于处理含有缺失值的向量,
很多函数在默认参数下不能工作
,比如:
> x <- c(2, 5, NA, 7, NA, 8)
> mean(x)
[1] NA
> max(x)
[1] NA
> mean(x, na.rm=TRUE)
[1] 5.5
> max(x, na.rm=TRUE)
[1] 8
可通过设置
na.rm
为
TRUE
来删除缺失值,然后再统计
有时我们还想知道
缺失值
NA
在哪个位置
。此时可以通过
which()
函数来输出位置索引,比如:
> x <- c(2, 5, NA, 7, NA, 8)
> which(is.na(x)) ## 第3和5个元素是缺失值
[1] 3 5
有关R语言里面的特殊值就讲到这。
返回搜狐,查看更多
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。