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 przeznames(x) <- c(...) - Dostęp według nazwy za pomocą
x['name'](zachowuje nazwę) lubx[['name']](zwraca tylko wartość) setNames(x, nm)zwraca nazwaną kopię bez modyfikowania oryginałuunname(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 przeznames(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
- Operator dwukropka dla zakresów liczb całkowitych
- seq() dla niestandardowych sekwencji
- rep() dla powtarzających się wartości
- Nazwane wektory i sekwencje