2.4 特殊数字

为了帮助算术运算,R支持四种特殊值:Inf-InfNaNNA。显然,前两个分别是正负无穷,而后两个则需做些解释。NaN为“不是一个数”(not-a-number)的缩写,它意味着我们的计算或没有数学意义,或无法正确执行。NA是“不可用”(not available)的缩写,并代表缺失值——这个问题在数据分析中会经常碰到。在一般情况下,如果我们的计算涉及一个缺失值,则结果也将丢失。

  1. c(Inf + 1, Inf - 1, Inf - Inf)
  2. ## [1] Inf Inf NaN
  3. c(1 / Inf, Inf / 1, Inf / Inf)
  4. ## [1] 0 Inf NaN
  5. c(sqrt(Inf), sin(Inf))
  6. ## Warning: NaNs produced
  7. ## [1] Inf NaN
  8. c(log(Inf), log(Inf, base = Inf))
  9. ## Warning: NaNs produced
  10. ## [1] Inf NaN
  11. c(NA + 1, NA * 5, NA + Inf)
  12. ## [1] NA NA NA

当算术中涉及NANaN时,得到的结果将为这两个值之一,取哪个值则取决于所使用的系统:

  1. c(NA + NA, NaN + NaN, NaN + NA, NA + NaN)
  2. ## [1] NA NaN NaN NA

可使用函数来检查这些特殊值。请注意,NaNNA既非有限值亦非无限值,NaN代表缺失值,而NA一个数字。

  1. x <- c(0, Inf, -Inf, NaN, NA)
  2. is.finite(x)
  3. ## [1] TRUE FALSE FALSE FALSE FALSE
  4. is.infinite(x)
  5. ## [1] FALSE TRUE TRUE FALSE FALSE
  6. is.nan(x)
  7. ## [1] FALSE FALSE FALSE TRUE FALSE
  8. is.na(x)
  9. ## [1] FALSE FALSE FALSE TRUE TRUE