R语言初级教程: NA、Inf、NaN、NULL 特殊值 | 您所在的位置:网站首页 › r语言null什么意思 › R语言初级教程: NA、Inf、NaN、NULL 特殊值 |
作者介绍: 杨光辉,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. NULLNULL表示空值,表示没有内容。 一般常用在函数参数中,表示该参数没有被赋予任何值。也经常用在初始化变量,表示变量没有任何内容,因此它的长度为0。来看个例子: > x length(x) [1] 0 > is.null(x) ## is.null()函数判断是否为空值 [1] TRUE 4. NANA表示缺失值(Missing value),我们将会经常碰到这个值。 你可能想知道向量中是否有缺失值。对于这个问题,有人说用 ==关系运算符就行了,是这样吗?来看个例子: > x 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 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 which(is.na(x)) ## 第3和5个元素是缺失值 [1] 3 5 有关R语言里面的特殊值就讲到这。 如若有遗漏,后期将会添加至作者博客,欢迎关注~~ |
CopyRight 2018-2019 实验室设备网 版权所有 |