R Academy · Oppitunti

Nimetyt vektorit ja jonot

Määrittäkää vektoreille nimet ja käyttäkää niitä luettavan koodin kirjoittamiseen.

Oppitunti 4/413 vaihetta

Nimetyt vektorit ja jonot on ilmainen R Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu R Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. R Academy-kurssilla on yhteensä 4 oppituntia.

Johdatus nimettyihin vektoreihin

Nimetty vektori on vektori, jonka jokaisella alkiolla on nimi (merkkijonotunniste). Nimet tekevät koodista luettavampaa ja mahdollistavat alkioiden käsittelyn nimen eikä sijainti-indeksin perusteella.

# A plain vector vs a named vector
plain <- c(78, 92, 85, 67)
named <- c(Alice = 78, Bob = 92, Carol = 85, Dave = 67)

cat('Plain vector:', plain, '
')
cat('Named vector:
')
print(named)

Nimettyjen vektorien luominen c()-funktiolla

Yksinkertaisin tapa luoda nimetty vektori on käyttää name = value -pareja funktion c() sisällä. Nimet voivat olla mitä tahansa kelvollisia merkkijonoja. Jos ne sisältävät välilyöntejä tai erikoismerkkejä, ympäröi ne backtick-merkeillä tai lainausmerkeillä.

# GDP in trillions USD
gdp <- c(USA = 27.4, China = 18.0, Germany = 4.1,
         Japan = 4.2, UK = 3.1)
cat('GDP values:
')
print(gdp)
cat('Names:', names(gdp), '
')
cat('Values:', unname(gdp), '
')

names()-funktio

names(x) noutaa vektorin nimet merkkivektorina. Voit myös asettaa nimet luomisen jälkeen käyttämällä ilmausta names(x) <- c(...), joka muokkaa vektoria paikallaan.

# Assign names after creation
temps <- c(22.1, 18.5, 25.3, 20.0)
cat('Before naming:', temps, '
')

names(temps) <- c('Mon', 'Tue', 'Wed', 'Thu')
cat('After naming:
')
print(temps)

# Retrieve names
cat('Days:', names(temps), '
')

Alkioiden käyttäminen nimen perusteella

Käytä nimetyn vektorin alkioita ilmauksella x["name"] tai x[["name"]]. Yksi hakasulkupari [] palauttaa nimetyn osajoukon, kun taas [[]] palauttaa pelkän arvon ilman nimeä.

scores <- c(Math = 88, Science = 92, English = 75, History = 81)

# Single bracket: keeps name
cat('Math score (with name):
')
print(scores['Math'])

# Double bracket: just the value
cat('Science score (value only):', scores[['Science']], '
')

# Multiple names
cat('STEM subjects:
')
print(scores[c('Math', 'Science')])

setNames() funktionaaliseen tyyliin

setNames(x, nm) palauttaa vektorista x kopion, jonka nimiksi asetetaan nm, muuttamatta alkuperäistä vektoria. Tämä on hyödyllistä putkissa, joissa vektorille halutaan antaa nimet osana toimintojen ketjua.

# setNames returns a named copy (does not modify original)
raw_values <- c(0.85, 0.72, 0.91, 0.68)
metrics <- setNames(raw_values, c('Precision', 'Recall', 'F1', 'Accuracy'))

cat('Original (unchanged):', raw_values, '
')
cat('Named metrics:
')
print(metrics)

# Best metric
best_name <- names(which.max(metrics))
cat('Best metric:', best_name, '=', metrics[best_name], '
')

Nimien muokkaaminen

Voit muuttaa yksittäisiä nimiä indeksoimalla names(x)-vektoria. Tämä on hyödyllistä, kun haluat nimetä osan alkioista uudelleen luomatta koko vektoria uudelleen.

prices <- c(apple = 1.20, bannana = 0.80, cherry = 3.50)  # typo!

# Fix a single name
names(prices)[2] <- 'banana'
cat('Fixed names:
')
print(prices)

# Rename all
names(prices) <- c('Apple', 'Banana', 'Cherry')  # capitalise
cat('Capitalised:
')
print(prices)

Nimetyt jonot seq()- ja names()-funktioilla

Voit luoda nimetyn jonon yhdistämällä seq()- ja setNames()-funktiot. Tämä on erityisen hyödyllistä kuukausi- tai viikkoindekseissä, joissa nimet antavat numeerisille arvoille lisäkontekstia.

# Monthly average temperature with names
temps_monthly <- setNames(
  c(3.1, 4.2, 8.5, 13.0, 17.2, 21.0, 23.5, 23.0, 19.0, 13.5, 7.8, 4.0),
  month.abb
)
cat('Monthly temps:
')
print(temps_monthly)
cat('Summer avg:', mean(temps_monthly[c('Jun', 'Jul', 'Aug')]), '
')

Nimettyjen vektorien suodattaminen

Nimetyt vektorit tukevat sekä loogista että merkkipohjaista indeksointia. Voit valita alkioita nimen perusteella ja suodattaa niitä samalla arvon perusteella, mikä tekee nimetyistä vektoreista erittäin ilmaisukykyisiä pienissä hakutaulukoissa.

population <- c(Tokyo = 37.4, Delhi = 32.9, Shanghai = 28.5,
                Dhaka = 22.5, Cairo = 21.3, Mumbai = 20.7)

# Select cities with population > 25 million
big_cities <- population[population > 25]
cat('Cities over 25M:
')
print(big_cities)

# Sort descending by population
cat('Ranked:
')
print(sort(population, decreasing = TRUE))

Nimien poistaminen unname()-funktiolla

unname(x) poistaa kaikki nimet vektorista ja palauttaa pelkät arvot. Tämä on hyödyllistä, kun data välitetään funktioille, jotka eivät odota nimettyjä vektoreita, tai kun nimet tekevät tulosteesta visuaalisesti raskaan.

named_vec <- c(x1 = 10, x2 = 20, x3 = 30, x4 = 40)
cat('Named:
')
print(named_vec)

unnamed_vec <- unname(named_vec)
cat('Unnamed:
')
print(unnamed_vec)

# Check
cat('Has names after unname:', !is.null(names(unnamed_vec)), '
')

Nimetyt vektorit hakutaulukoina

Yksi nimettyjen vektorien tehokkaimmista käyttötavoista on käyttää niitä hakutaulukkona: avainten yhdistämiseen arvoihin. if-else-lauseiden ketjun sijaan voit käyttää nimettyä vektoria ja indeksoida sitä.

# Map month abbreviation to number of days
days_in_month <- c(Jan=31, Feb=28, Mar=31, Apr=30, May=31,
                   Jun=30, Jul=31, Aug=31, Sep=30, Oct=31,
                   Nov=30, Dec=31)

# Look up specific months
query <- c('Mar', 'Jul', 'Nov')
cat('Days in', query[1], ':', days_in_month[query[1]], '
')
cat('Days in', query[2], ':', days_in_month[query[2]], '
')
cat('Days in', query[3], ':', days_in_month[query[3]], '
')

Nimetyt vektorit: tärkeimmät asiat

Yhteenveto nimettyjen vektorien ominaisuuksista R:ssä:

  • Luo vektori ilmauksella c(name = value, ...) tai määritä nimet ilmauksella names(x) <- c(...)
  • Käytä alkiota nimen perusteella ilmauksella x['name'] (säilyttää nimen) tai x[['name']] (vain arvo)
  • setNames(x, nm) palauttaa nimetyn kopion muuttamatta alkuperäistä
  • unname(x) poistaa kaikki nimet
  • Nimetyt vektorit toimivat elegantteina hakutaulukoina (ja korvaavat if-else-ketjut)
# Complete workflow
rates <- c(USD = 1.0, EUR = 0.92, GBP = 0.79, JPY = 149.5)

# Convert 100 USD to each currency
amount_usd <- 100
converted <- amount_usd * rates
cat('100 USD in other currencies:
')
print(round(converted, 2))

Pikatarkistus

Mikä ero on ilmauksilla x['key'] ja x[['key']], kun x on nimetty vektori?

Kertaus: nimetyt vektorit

Hienosti tehty! Tämän oppitunnin tärkeimmät opit:

  • Nimetyn vektorin jokainen alkio yhdistyy merkkitunnisteeseen
  • Luo vektori syntaksilla c(name = val) tai määritä nimet ilmauksella names(x) <- ...
  • x['name'] palauttaa nimetyn osajoukon; x[['name']] palauttaa vain arvon
  • setNames() on funktionaalinen eli alkuperäistä muuttamaton tapa liittää nimiä
  • Käytä nimettyjä vektoreita hakutaulukoina pitkien if-else-ketjujen sijaan
  • unname() poistaa nimet, kun tarvitaan raakoja arvoja
# Named vector as grade lookup
grade_map <- c('90'='A', '80'='B', '70'='C', '60'='D')
student_score <- 80

# Find grade bracket
brackets <- c(90, 80, 70, 60)
threshold <- max(brackets[brackets <= student_score])
cat('Score:', student_score, '-> Grade:', grade_map[as.character(threshold)], '
')
Aloita maksutta

Opi R tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
43
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”Nimetyt vektorit ja jonot” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa R Academy-oppimispolun 3 oppituntia, myös oppitunnin “Nimetyt vektorit ja jonot”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. R Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Nimetyt vektorit ja jonot”?

Määrittäkää vektoreille nimet ja käyttäkää niitä luettavan koodin kirjoittamiseen. Harjoittelet R Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni R Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin R Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Nimetyt vektorit ja jonot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä R Academy-oppitunnilla?

Kyllä. Jokainen R Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kaksoispisteoperaattori kokonaislukuväleille
  2. seq() mukautetuille jonoille
  3. rep() toistuville arvoille
  4. Nimetyt vektorit ja jonot
← Takaisin: R Academy