NA, NULL, NaN, Inf predstavljaju posebne simbole nedostupnih vrijednosti u R-u.
NA predstavlja nedostajuće vrijednosti, dok ostali simboli su obično rezultat kalkulacija ili dodjeljivanja vrijednosti vektoru.
Zadatak: Ispitati koju nedostupnu vrijednost sadrže elementi datog vektora x.
> #definisati vekor x
> x <- c(1, 2, NA, 3, NaN, Inf, 4, -Inf)
> x
[1] 1 2 NA 3 NaN Inf 4 -Inf
> is.na(x)
[1] FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
> is.nan(x)
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
> is.infinite(x)
[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
> #sumiranje rezultata u data frame
> cbind.data.frame(x, na = is.na(x), nan = is.nan(x), infinite = is.infinite(x))
x na nan infinite
1 1 FALSE FALSE FALSE
2 2 FALSE FALSE FALSE
3 NA TRUE FALSE FALSE
4 3 FALSE FALSE FALSE
5 NaN TRUE TRUE FALSE
6 Inf FALSE FALSE TRUE
7 4 FALSE FALSE FALSE
8 -Inf FALSE FALSE TRUE
>
> #provjera za NULL vrijednosti
> #definisti listu od 2 prazna elementa
> l <- vector("list", 2)
> l
[[1]]
NULL
[[2]]
NULL
> #provjeriti da li je prvi element liste NULL
> is.null(l[[1]])
[1] TRUE
>
> #dodjeljivanje NULL vrijednosti elementu vektora
> c(1, NULL)
[1] 1
Posebnu pažnju treba obratiti na primjenu funkcija i manipulaciju sa vektorima koji sadrže nedostupne vrijednosti.
> #definisati vekor x
> x <- c(1, 2, NA, 3, NaN, Inf, 4, -Inf)
> #pokusaj 1 - za date vrijednosti vektora x: rezultat NA vrijednost
> x
[1] 1 2 NA 3 NaN Inf 4 -Inf
> mean(x)
[1] NA
> #pokusaj 2 - iskljucivanje NA vrijednosti: rezulta NaN vrijednost
> x[!is.na(x)]
[1] 1 2 3 Inf 4 -Inf
> mean(x[!is.na(x)])
[1] NaN
> #pokusaj 3 - iskljucivanje NA i Inf vrijednosti: rezultat 2.5
> mean(x[!is.na(x) & !is.infinite(x)])
[1] 2.5