2.5 缺损值

在某些情况下,向量的元素可能有残缺。当一个元素或者值在统计意义上“不可得到”(not available)或者“值丢失” (missing value),相关位置可能会被保留并且赋予一个特定的值 NA1。通常,任何含有 NA 数据的运算结果都将是 NA 。这样做法的道理很简单,如果一次操作的数据都是残缺的,那么结果也必然是不可预料的,因此也是不可得的。

函数 is.na(x) 返回一个和 x 同等长度的逻辑向量。它的某个元素值为 TRUE 当且仅当 x 中对应元素是 NA

> z <- c(1:3,NA);  ind <- is.na(z)

特别要注意的是逻辑表达式 x == NAis.na(x) 完全不同,因为 NA 不是一个真实的值而是一个符号以表示某个量是不可得到的(not available)。因此 x == NA 得到的是一个长度和 x 一致的向量,它的所有元素的值都是 NA,因为该逻辑表达式本身不完整,因此它也是不可确定的。

还要注意数值计算会产生第二种“缺损”值,也称为非数值(Not a Number) NaN。例如

> 0/0

或者

> Inf - Inf

得到的都是 NaN,这是因为它们的结果都不能被显式的定义。

总之,对于 NANaNis.na(xx) 检验都是 TRUE。为了区分它们,is.nan(xx) 就只对是 NaN 的元素显示 TRUE

当字符向量以没有引号的形式输出时,缺损值2可能会以 <NA> 形式输出。

> a <- c("a","b",NA)
> a
[1] "a" "b" NA
> print(a, quote = F)
[1] a b <NA>

1. 译者(丁国徽)注:我在0.01β版里面用缺省值这个汉语概念来描述这种数据,PDF版本里面改用缺损值描述。这样可能更为准确一点。
2. 译者(丁国徽)注:下面的例子由黄荣贵网友提供。

results matching ""

    No results matching ""