Kurzusok
/
R
R
/
Feladatok
/
Madárfigyelő
Madárfigyelő

Madárfigyelő

Tanulófeladat

Bevezetés

Ez egy jelentős fogalom az R-ben. Hogy könnyebben átlássuk a lehetőségeket, érdemes megvizsgálni a különböző függvények bemenetének és kimenetének dimenziósságát.

Vektor be, skalár ki

Láttunk már olyan függvényeket, amelyek egy vektort kapnak bemenetként, és egyetlen, skalárszerű értéket adnak vissza:

> v <- 1:5
> length(v)
#> [1] 5
> sum(v)
#> [1] 15

Sok statisztikai függvény is ebbe a kategóriába tartozik, például a mean().

Logikai vektorokra az all() és az any() használható.

Vektor be, vektor ki

Az R-ben sok függvény teljes vektorokon működik, és gyakran vektoros kimenetet ad. Ide tartozik a matematikai függvények többsége:

> sq <- c(4, 9, 16, 25)
> sqrt(sq) # square root
#> [1] 2 3 4 5

Ez nemcsak tömör és kényelmes, hanem elkerüli a ciklusok, listakomprehenziók vagy rekurzió szükségességét is, amelyek gyakoriak más nyelvekben. Az R-ben a vektorfüggvények gyakran sokkal gyorsabban futnak, mint ezek a technikák.

Egy vektor rendezéséhez használhatod a sort() függvényt, amely az értékeket adja vissza, és az order() függvényt, amely az indexeket:

> v <- c("I", "am", "not", "in", "order")
> sort(v)
#> [1] "am"    "I"     "in"    "not"   "order"
> order(v)
#> [1] 2 1 4 3 5

A rendezés alapértelmezés szerint növekvő sorrendben történik. Ha szükséges, add meg a decreasing = TRUE beállítást, vagy használd a rev() függvényt egy meglévő vektor megfordításához.

v <- c("I", "am", "not", "in", "order")
sort(v, decreasing = TRUE)
#> [1] "order" "not"   "in"    "I"     "am"

rev(1:4)
#> [1] 4 3 2 1

Vannak olyan függvények is, amelyek kumulatív vektoros kimenetet állítanak elő, és balról jobbra haladva működnek a bemeneti vektoron:

> cumsum(1:5)
#> [1]  1  3  6 10 15  # sums
> cumprod(1:5)
#> [1]   1   2   6  24 120 # equivalent to factorials

Több vektor be, vektor ki

A fogalom kiterjesztése vektorok összehasonlítására is használható. Például vegyük a páronkénti maximumot kiszámító pmax() függvényt:

> v
#> [1] 2 7 9
> w
#> [1] 3 1 5
> pmax(v, w)
#> [1] 3 7 9 # max of each pairwise comparison

Utasítások

Szenvedélyes madárfigyelő vagy, aki számontartja, hány madár járt a kertedben az elmúlt hét napban.

Hat részfeladat vár rád, és mindegyik a kertedbe látogató madarak számával foglalkozik.

1. Ellenőrizd, hány madár járt ma

A today() függvényt úgy valósítsd meg, hogy visszaadja, hány madár járt ma a kertedben. A madárszámok nap szerinti sorrendben állnak: az első elem a legrégebbi naphoz tartozó szám, az utolsó pedig a maihoz.

birds_per_day <- c(2, 5, 0, 7, 4, 1)
today(birds_per_day)
# => 1

2. Növeld meg a mai nap értékét

Az increment_todays_count() függvényt úgy valósítsd meg, hogy megnövelje a mai nap értékét:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
increment_todays_count(birds_per_day)
# => c(2, 5, 0, 7, 4, 2)

3. Ellenőrizd, volt-e olyan nap, amikor nem járt madár

A has_day_without_birds() függvényt úgy valósítsd meg, hogy TRUE értéket adjon vissza, ha volt olyan nap, amikor nulla madár járt a kertedben; egyébként pedig FALSE értéket:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
has_day_without_birds(birds_per_day)
# => true

4. Számold ki a látogató madarak számát az első megadott számú napra

A count_for_first_days() függvényt úgy valósítsd meg, hogy visszaadja, hány madár járt a kertedben a hét elejétől, de a számolást korlátozd a hét elejétől megadott számú napra.

birds_per_day <- c(2, 5, 0, 7, 4, 1)
count_for_first_days(birds_per_day, 4)
# => 14

5. Számold ki a forgalmas napok számát

Vannak forgalmasabb napok, mint a többi. Forgalmas nap az, amikor legalább öt madár járt a kertedben. A busy_days() függvényt úgy valósítsd meg, hogy visszaadja a forgalmas napok számát:

birds_per_day <- c(2, 5, 0, 7, 4, 1)
busy_days(birds_per_day)
# => 2

6. Számold ki a madárlátogatások futóösszegét az elmúlt héten

Kíváncsi vagy rá, hogy összesen hány madár járt itt eddig ezen a héten. Számold ki a halmozott összeget minden napra.

running_total(c(7, 6, 5, 4, 3, 2, 1))
#> [1]  7 13 18 22 25 27 28

7. Rendezd a napok neveit aszerint, mennyire voltak forgalmasak

Gyanítod, hogy a madárlátogatásokat a közeli úti forgalom mintázata befolyásolja, ami miatt a hétvége más, mint a hétköznapok.

Rendezd a napok rövidítéseit csökkenő sorrendbe aszerint, hány madár járt itt.

day_names <- c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
birds_per_day <- c(5, 2, 4, 6, 0, 9, 8)
busy_days_of_week(birds_per_day, day_names)
#> [1] "Sat" "Sun" "Thu" "Mon" "Wed" "Tue" "Fri"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
R Exercism

Készen állsz elkezdeni a(z) Madárfigyelő feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) R nyelvet 21 fogalom111 feladat segítségével, valódi emberi mentorálással, mindez ingyen.