Se

Semmi ebben a kurzusban: R

1 feladat

A(z) Semmi fogalomról

Sok nyelvben van valami, például a null vagy a none, amivel egy nem létező értéket lehet jelölni. Mivel az R-t nagy mennyiségű (gyakran rendezetlen) adat kezelésére tervezték, többféle formája is van a semminek.

Az általános cél az, hogy a hiányzó vagy gyanús értékeket rögtön megjelöljük, amikor találkozunk velük, majd anélkül folytassuk, hogy kivételt dobnánk.

NULL

Ha egy érték valóban nem létezik, azt NULL jelöli. Ez valószínűleg áll a legközelebb ahhoz, amit a C vagy a Python tenne.

v <- c() # zero-length vector
v
#> NULL
is.null(v)
#> [1] TRUE

Sok esetben a NULL értékeket egyszerűen figyelmen kívül hagyjuk:

c(2, 3, NULL, 5)
#> [1] 2 3 5

NA

Azokban a helyzetekben, amikor egy érték létezik, de nem tudjuk, mi az, az NA használatos. Például amikor egy úton haladó járműveket számolunk, előfordulhat, hogy az emberi megfigyelők megbetegszenek, vagy elromlanak az automatikus érzékelők, a forgalom viszont tovább halad.

v <- c(1, 2, NA, 4, 5)
v
#> [1]  1  2 NA 4  5
is.na(v) # test for data gaps
#> [1] FALSE FALSE  TRUE FALSE FALSE

Így az NA egy helyőrző, amely figyelmezteti az embert, hogy döntenie kell arról, hogyan kezelje ezt.

A statisztikai függvények alapértelmezés szerint általában NA-t adnak vissza, ha NA értékek vannak jelen. Ha azt szeretnéd, hogy ezeket az értékeket figyelmen kívül hagyják, használd az na.rm (NA remove) paramétert, hogy ezt egyértelművé tedd:

v <- c(1, 2, NA, 4, 5)
mean(v)
#> [1] NA
mean(v, na.rm = TRUE)
#> [1] 3

NaN

A „Not a Number” rövidítése; a NaN egy számítási problémát jelez olyan helyzetekben, amikor számot vártunk.

n <- c(0, 2, 4)
d <- c(0, 1, 2)
n / d
#> [1] NaN   2   2  # 0/0 is mathematically undefined
is.nan(n / d)
#> [1]  TRUE FALSE FALSE

Ez nem az egyetlen lehetőség az „érvénytelen” számításokra. A nullával való osztás nem nulla számláló esetén Inf vagy -Inf értéket ad vissza, anélkül hogy hibát dobna.

1 / 0
#> [1] Inf

Üres vektorok

Talán meglepő, de az R-nek nincs szabványos módja az üresség ellenőrzésére, bár néhány harmadik féltől származó csomag megvalósítja a saját függvényeit, például az is.empty() függvényt.

Még egy üres vektor előállítása sem teljesen nyilvánvaló. Egy korábbi szakaszban láttuk, hogy az argumentum nélküli c() NULL-t ad vissza, nem egy vektort.

is.vector(c())
#> [1] FALSE

Az olyan függvények, mint a logical() vagy az integer(), egy argumentumot várnak, amely megadja a kívánt hosszt, ami nulla is lehet.

z <- logical(0)
is.vector(z)
#> [1] TRUE
length(z)
#> [1] 0

Úgy is előállíthatunk egy vektort, hogy utána eltávolítjuk az összes elemét, ahogy azt a Vektorok fogalom leírja. Ennek eredménye egy megfelelő típusú, 0 hosszúságú vektor.

v <- 5
v[-1]  # delete the first element
#> numeric(0)
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Semmi fogalmat