2.4 特殊数字
为了帮助算术运算,R支持四种特殊值:Inf
、-Inf
、NaN
和NA
。显然,前两个分别是正负无穷,而后两个则需做些解释。NaN
为“不是一个数”(not-a-number)的缩写,它意味着我们的计算或没有数学意义,或无法正确执行。NA
是“不可用”(not available)的缩写,并代表缺失值——这个问题在数据分析中会经常碰到。在一般情况下,如果我们的计算涉及一个缺失值,则结果也将丢失。
c(Inf + 1, Inf - 1, Inf - Inf)
## [1] Inf Inf NaN
c(1 / Inf, Inf / 1, Inf / Inf)
## [1] 0 Inf NaN
c(sqrt(Inf), sin(Inf))
## Warning: NaNs produced
## [1] Inf NaN
c(log(Inf), log(Inf, base = Inf))
## Warning: NaNs produced
## [1] Inf NaN
c(NA + 1, NA * 5, NA + Inf)
## [1] NA NA NA
当算术中涉及NA
和NaN
时,得到的结果将为这两个值之一,取哪个值则取决于所使用的系统:
c(NA + NA, NaN + NaN, NaN + NA, NA + NaN)
## [1] NA NaN NaN NA
可使用函数来检查这些特殊值。请注意,NaN
和NA
既非有限值亦非无限值,NaN
代表缺失值,而NA
是一个数字。
x <- c(0, Inf, -Inf, NaN, NA)
is.finite(x)
## [1] TRUE FALSE FALSE FALSE FALSE
is.infinite(x)
## [1] FALSE TRUE TRUE FALSE FALSE
is.nan(x)
## [1] FALSE FALSE FALSE TRUE FALSE
is.na(x)
## [1] FALSE FALSE FALSE TRUE TRUE