Al

Alapok ebben a kurzusban: R

1 feladat

A(z) Alapok fogalomról

Változók és értékadás

Az R egy dinamikusan típusos nyelv, ezért általában nem szükséges megadni egy változó típusát. Az alapértelmezett típus a numeric, amelyet általában kétszeres pontosságú lebegőpontos számként valósítanak meg. Ha 32 bites egész számokat szeretnél használni, használj L utótagot (a Long rövidítése).

Egy objektum „típusának” lekérdezése (történelmi okokból) esetleg zavaró lehet. A typeof() és a class() függvények hasonlóak, de némileg eltérő eredményt adhatnak vissza:

typeof(50)
#> [1] "double"  # more specific: an implementation detail
typeof(50L)
##> [1] "integer"

class(50)
#> [1] "numeric"  # less specific: ignores implementation details
class(50L)
#> [1] "integer"
Advanced

Találkozhatsz a mode()-ra való hivatkozásokkal is. A mode() hasonló a typeof()-hoz.

Kérlek, hagyd figyelmen kívül a mode()-ot és a storage.mode()-ot. Ezeket csak a visszafelé kompatibilitás miatt biztosítják.

Az előnyben részesített értékadó operátor a <-. Ha RStudio-ban dolgozol, a Alt-minus gyorsbillentyűvel írhatod be.

x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"

Ha =-t használsz a <- helyett, az gyakran, de nem mindig működik, és rossz stílusnak számít.

Az operátorok nagyrészt hasonlóak sok más nyelvhez, bár a %% és a %/% szokatlanabbak. Ez a % szintaxis a makróként megvalósított infix operátorok meghívásának egy módja.

2 + 3   # 5
2 - 3   # -1
2 * 3   # 6
2 / 3   # 0.6666667
8 %/% 3 # 2 (integer division)
8 %% 3  # 2 (remainder)
2 ^ 3   # 8 (exponential)

Az R-ben a # egysoros megjegyzést indít. A többsoros megjegyzésekhez nincs külön szintaxis.

Függvények

Függvény definiálása:

squareit <- function(x) {
    x * x
}

A függvényeknek nulla vagy több argumentuma lehet, vesszővel elválasztva. A function() használatakor zárójelek () kellenek, akkor is, ha nincsenek paraméterek.

A függvényargumentumokhoz megadhatók alapértelmezett értékek, de ezeknek az alapértelmezés nélküli argumentumok után kell következniük, és az alapértelmezett érték hozzárendeléséhez =-t kell használni, nem <--t. Egy meglehetősen értelmetlen példa:

squareit <- function(x = 42) {
    x * x
}

squareit()
#> [1] 1764

A kapcsos zárójelek { } nem szigorúan kötelezőek egysoros függvénytörzseknél, de ezek használata jó stílusnak számít.

Az R automatikusan visszaadja a függvény végső értékét, mint a fenti példákban.

A return() a függvénytörzs bármely pontján használható, hogy egy visszatérési értéket explicit módon megadjunk. Azonnal visszaadja a megadott értéket, és leállítja a függvényt anélkül, hogy végrehajtaná a függvénytörzs többi kifejezését.

A return() explicit hívása általában csak akkor szükséges, ha valaki valamilyen okból korán szeretne kilépni a függvényből, és egy konkrét értéket szeretne visszaadni. Erre példa lehet egy if-else elágazás.

Néhány fejlesztő azonban a kódstílus részeként az explicit visszatéréseket részesíti előnyben.

Egy függvény hívása ugyanaz, mint sok más nyelvben:

squareit(3)
#> [1] 9

A későbbi fogalmakban látni fogjuk, hogy a 9 eredmény valójában egy 1 hosszúságú vektor, nem pedig egy skalár szám. Ezért szerepel a [1], ami azt jelzi, hogy ez a vektor eleje.

is.vector(9)
#> [1] TRUE

Az R-ben a legtöbb dolog valamilyen vektor!

Note

Az R konzol a fenti példát így jelenítené meg:

> squareit(3)
[1] 9

A tanterv dokumentumai nagyrészt azt a konvenciót követik, amelyet több R-tankönyv is használ: elhagyják a promptot, és megjegyzésként írják az eredményt. Így könnyebb a kódpéldákat a konzolba másolni és futtatni.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Alapok fogalmat