0Pricing
R Academy · Lekcja

Nazwane wektory i sekwencje

Przypisuj nazwy wektorom i odczytuj je, aby tworzyć czytelny kod.

Nazwane wektory i sekwencje to bezpłatna lekcja R Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.

Wprowadzenie do wektorów nazwanych

Wektor nazwany to wektor, w którym każdy element ma przypisaną nazwę (etykietę tekstową). Nazwy zwiększają czytelność kodu i pozwalają uzyskiwać dostęp do elementów za pomocą nazw zamiast indeksu pozycji.

# 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)

Tworzenie wektorów nazwanych za pomocą c()

Najprostszym sposobem utworzenia wektora nazwanego jest użycie par name = value wewnątrz c(). Nazwy mogą być dowolnymi prawidłowymi ciągami znaków; jeśli zawierają spacje lub znaki specjalne, należy ująć je w backticki lub cudzysłowy.

# 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), '
')

Funkcja names()

names(x) pobiera nazwy wektora jako wektor tekstowy. Nazwy można również przypisać po utworzeniu wektora za pomocą names(x) <- c(...), co modyfikuje wektor w miejscu.

# 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), '
')

Uzyskiwanie dostępu do elementów według nazwy

Dostęp do elementów wektora nazwanego można uzyskać za pomocą x["name"] lub x[["name"]]. Pojedynczy nawias kwadratowy [] zwraca nazwany podzbiór, a [[]] zwraca samą wartość bez nazwy.

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() w stylu funkcyjnym

setNames(x, nm) zwraca kopię x z nazwami ustawionymi na nm, bez modyfikowania oryginału. Jest to przydatne w potokach, gdy chcą Państwo nadać wektorowi nazwy jako część łańcucha operacji.

# 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], '
')

Modyfikowanie nazw

Poszczególne nazwy można zmieniać, indeksując elementy names(x). Jest to przydatne, gdy trzeba zmienić nazwy podzbioru elementów bez tworzenia całego wektora od nowa.

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)

Nazwane sekwencje za pomocą seq() i names()

Nazwaną sekwencję można utworzyć, łącząc seq() z setNames(). Jest to szczególnie przydatne w przypadku indeksów miesięcznych lub tygodniowych, gdy nazwy zapewniają dodatkowy kontekst dla wartości numerycznych.

# 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')]), '
')

Filtrowanie wektorów nazwanych

Wektory nazwane obsługują indeksowanie logiczne i tekstowe. Można jednocześnie wybierać elementy według nazwy i filtrować je według wartości, dzięki czemu wektory nazwane są bardzo wyrazistym rozwiązaniem dla małych tabel wyszukiwania.

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))

Usuwanie nazw za pomocą unname()

unname(x) usuwa wszystkie nazwy z wektora, zwracając same wartości. Jest to przydatne podczas przekazywania danych do funkcji, które nie oczekują wektorów nazwanych, lub gdy nazwy niepotrzebnie zaśmiecają wynik.

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)), '
')

Wektory nazwane jako tabele wyszukiwania

Jednym z najbardziej użytecznych zastosowań wektorów nazwanych jest wykorzystanie ich jako tabeli wyszukiwania: mapowania kluczy na wartości. Zamiast łańcucha instrukcji if-else można użyć wektora nazwanego i indeksować go.

# 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]], '
')

Wektory nazwane: najważniejsze informacje

Podsumowanie funkcji wektorów nazwanych w R:

  • Tworzenie za pomocą c(name = value, ...) lub przypisanie przez names(x) <- c(...)
  • Dostęp według nazwy za pomocą x['name'] (zachowuje nazwę) lub x[['name']] (zwraca tylko wartość)
  • setNames(x, nm) zwraca nazwaną kopię bez modyfikowania oryginału
  • unname(x) usuwa wszystkie nazwy
  • Wektory nazwane sprawdzają się jako eleganckie tabele wyszukiwania (zastępują łańcuchy if-else)
# 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))

Szybkie sprawdzenie

Jaka jest różnica między x['key'] a x[['key']], gdy x jest wektorem nazwanym?

Podsumowanie: wektory nazwane

Świetnie! Najważniejsze informacje z tej lekcji:

  • Wektory nazwane łączą każdy element z etykietą tekstową
  • Można je tworzyć za pomocą składni c(name = val) lub przypisywać nazwy przez names(x) <- ...
  • x['name'] zwraca nazwany podzbiór; x[['name']] zwraca samą wartość
  • setNames() to funkcyjny, niemodyfikujący sposób przypisywania nazw
  • Wektory nazwane można wykorzystywać jako tabele wyszukiwania zamiast rozbudowanych łańcuchów if-else
  • unname() usuwa nazwy, gdy potrzebne są surowe wartości
# 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)], '
')

Często zadawane pytania

Czy lekcja „Nazwane wektory i sekwencje” jest bezpłatna?

Tak — pełny tekst „Nazwane wektory i sekwencje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Nazwane wektory i sekwencje”?

Przypisuj nazwy wektorom i odczytuj je, aby tworzyć czytelny kod. Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć R Academy?

Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Nazwane wektory i sekwencje”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?

Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Operator dwukropka dla zakresów liczb całkowitych
  2. seq() dla niestandardowych sekwencji
  3. rep() dla powtarzających się wartości
  4. Nazwane wektory i sekwencje
← Powrót do R Academy