在R语言中,Missing value的形式主要有:

  • NA: not available
  • NaN: 0/0
  • Inf: 无限大
> x <- c(44, NA, 5, NA)
> x * 3
[1] 132  NA  15  NA
> y <- rnorm(1000)
> z <- rep(NA, 1000)
> my_data <- sample(c(y, z), 100) # 随机采样100个元素
> my_data
  [1]  0.76629651  0.39615616 -0.71761642          NA          NA          NA
  [7]          NA          NA  0.60735445          NA          NA  0.08338313
 [13]  0.01974213          NA          NA -1.82657697          NA -0.28294051
 [19]  0.03196371          NA          NA -1.18456252          NA -1.20050025
 [25]          NA          NA -1.26944161  0.34304338 -1.61333718          NA
 [31]  1.79210540  1.01263881          NA  0.46270297 -0.12714577          NA
 [37]  0.32820326          NA -3.16195518 -0.39606753  1.16009695 -1.05330355
 [43]          NA          NA          NA  0.12118079          NA  0.04195091
 [49]          NA          NA          NA          NA -0.30896718          NA
 [55]          NA  1.83117760 -0.81086702          NA -1.56413088          NA
 [61] -1.11442068          NA          NA  0.38576924 -0.33668322 -0.15655147
 [67]          NA          NA          NA  1.27678659 -2.33632458          NA
 [73] -1.23821060          NA -0.91576671 -0.48974940  0.65014264          NA
 [79]          NA          NA          NA  0.19358796 -0.09460919          NA
 [85]          NA  1.11503910          NA  0.50268029          NA          NA
 [91]          NA          NA          NA          NA -0.07595303 -0.23761621
 [97]          NA -1.25733242          NA  0.54263107

> my_na <- is.na(my_data) # is.na 判断元素是否是NA,返回TRUE或FALSE
> my_na
  [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [14]  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE
 [27] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [40] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
 [53] FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [66] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [79]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
 [92]  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
> my_data == NA
  [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [28] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [55] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [82] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
> sum(my_na)
[1] 53

> 0/0
[1] NaN

> 5/0
[1] Inf

> Inf - Inf
[1] NaN

R语言中,TRUE就是1, FALSE就是0。所以想要计算my_data中有多少非NA元素,首先通过is.na来判断,返回一个logical vector,通过求和的方式即可得。

值得注意的是,通过my_data == NA无法得到与is.na一样的结果,因为NA无法比较,是一个存储未知量的placeholder,有点类似python的None

results matching ""

    No results matching ""