作者介绍:

杨光辉,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语言里面的特殊值就讲到这。 返回搜狐,查看更多

    责任编辑:

    声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。