R语言初级教程- NA、Inf、NaN、NULL 特殊值

R语言初级教程- NA、Inf、NaN、NULL 特殊值作者介绍 杨光辉 R 语言中文社区专栏作者 中科院近代物理研究所 科研工作者一枚 目前的研究方向是知识图谱 知乎专栏 R 语言初级教程 个人公众号 R 语言和 Python 学堂 这几个都是 R 语言里面的特殊值 都是 R 的 保留字 reserved words

大家好,我是讯享网,很高兴认识大家。

作者介绍:

杨光辉,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中也是这样,比如:

 

讯享网
  1. > 2 / 0       正无穷大
  2. [1] Inf
  3. > -2 / 0       负无穷大
  4. [1] -Inf

Inf也可参与一些运算,比如:

讯享网
  1. > 2/Inf       当分子为有限值、分母无穷大时,结果为0
  2. [1] 0
  3. > exp(-Inf)       自然数e的负无穷大次幂为0
  4. [1] 0
  5. > (0:3)^Inf       0的穷大次幂为0;1的穷大次幂还为1;大于1的数的无穷大次幂为无穷大
  6. [1]   0   1 Inf Inf

此外,在R中用 is.finite()is.infinite()来判断是否为无穷大数,比如:

 
  1. > is.finite(2)
  2. [1] TRUE
  3. > is.infinite(2/0)
  4. [1] TRUE

2. NaN

有些运算会导致结果为非数值,在R中用 NaN来表示,比如:

讯享网
  1. > 0 / 0
  2. [1] NaN
  3. > Inf - Inf
  4. [1] NaN
  5. > Inf / Inf
  6. [1] NaN

在R中,用 is.nan()来判断是否为非数值,比如:

 
  1. > is.nan(2)
  2. [1] FALSE
  3. > is.nan(NA)     缺失值NA不是非数值
  4. [1] FALSE
  5. > is.nan(0/0)
  6. [1] TRUE


    讯享网

3. NULL

NULL表示空值,表示没有内容。

一般常用在函数参数中,表示该参数没有被赋予任何值。也经常用在初始化变量,表示变量没有任何内容,因此它的长度为0。来看个例子:

讯享网
  1. > x <- NULL
  2. [1] 0
  3. > length(x)
  4. [1] 0
  5. > is.null(x)       is.null()函数判断是否为空值
  6. [1] TRUE

4. NA

NA表示缺失值(Missing value),我们将会经常碰到这个值。

你可能想知道向量中是否有缺失值。对于这个问题,有人说用 ==关系运算符就行了,是这样吗?来看个例子:

 
  1. > x <- c(2, 5, NA, 7, NA, 8)
  2. > x == NA
  3. [1] NA NA NA NA NA NA
  4. > is.na(x)     正确姿势
  5. [1] FALSE FALSE  TRUE FALSE  TRUE FALSE

显然用 ==不可行(为啥不行,仔细想想就明白),在R中可用 is.na()函数来判断是否为缺失值

有时我们想删除缺失值或想知道有多少个缺失值,可以通过下面代码来实现:

讯享网
  1. > x[! is.na(x)]     删除缺失值
  2. [1] 2 5 8
  3. > sum(is.na(x))     缺失值的个数
  4. [1] 2

对于处理含有缺失值的向量,很多函数在默认参数下不能工作,比如:

 
  1. > x <- c(2, 5, NA, 7, NA, 8)
  2. > mean(x)
  3. [1] NA
  4. > max(x)
  5. [1] NA
  6. > mean(x, na.rm=TRUE)
  7. [1] 5.5
  8. > max(x, na.rm=TRUE)
  9. [1] 8

可通过设置 na.rm为 TRUE来删除缺失值,然后再统计

有时我们还想知道缺失值 NA在哪个位置。此时可以通过 which()函数来输出位置索引,比如:

讯享网
  1. > x <- c(2, 5, NA, 7, NA, 8)
  2. > which(is.na(x))     第3和5个元素是缺失值
  3. [1] 3 5

有关R语言里面的特殊值就讲到这。

如若有遗漏,后期将会添加至作者博客,欢迎关注~~

640?wx_fmt=jpeg

小讯
上一篇 2025-02-25 07:09
下一篇 2025-01-07 16:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/16955.html