在一些情况下,向量的元素可能有残缺。
当一个元素或者值在统计的时候“不可得到”(not available) 或者 “值丢失”
(missing value),相关位置可能会被保留
并且赋予一个特定的值 NA。
任何含有 NA 数据的运算结果都将是 NA。
这样假设的道理很简单,如果一次操作的数据都是
残缺的,那么结果也必然是不可预料的,因此也是
不可得到的。
函数 is.na(x) 返回一个和 x 同样长度的向量。
它的某个元素值为 TRUE 当且仅当 x 中对应
元素是 NA。
> z <- c(1:3,NA); ind <- is.na(z)
特别要注意的是逻辑表达式 x == NA 和
is.na(x) 完全不同。因为 NA 不是一个真实的值
而是一个符号以表示某个量是不可得到的。因此 x == NA 得到的是
一个长度和 x 一致的向量。 它的 所有 元素的值都是 NA
因为该逻辑表达式本身不完整,因此也是不可判断的。
还要注意数值计算会产生第二种“缺省”值,
也称为 非数值(Not a Number),
NaN,
值。例如
> 0/0
或者
> Inf - Inf
二者都得到 NaN,这是因为它们的结果都不能显式的定义。
总之,对于 NA 和 NaN 用 is.na(xx) 检验都是 TRUE。
为了区分它们,is.nan(xx) 就只对是 NaN 元素显示
TRUE。
当字符向量以没有引号的形式打印时1,
缺省值可能会以 <NA> 形式显示。