이름 있는 벡터와 시퀀스
읽기 쉬운 코드를 위해 벡터에 이름을 할당하고 이름에 접근합니다.
이름 있는 벡터와 시퀀스은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
이름이 있는 벡터 소개
이름이 있는 벡터는 각 요소에 관련 이름(문자 레이블)이 지정된 벡터입니다. 이름을 사용하면 코드를 더 읽기 쉽게 만들 수 있으며, 위치 인덱스 대신 이름으로 요소에 접근할 수 있습니다.
# 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)c()로 이름이 있는 벡터 만들기
이름이 있는 벡터를 만드는 가장 간단한 방법은 c() 안에 name = value 쌍을 사용하는 것입니다. 이름에는 유효한 문자열을 사용할 수 있습니다. 이름에 공백이나 특수 문자가 포함되어 있다면 백틱이나 따옴표로 감싸십시오.
# 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() 함수
names(x)는 벡터의 이름을 문자형 벡터로 가져옵니다. 생성 후 names(x) <- c(...)를 사용해 이름을 할당할 수도 있으며, 이 방법은 벡터 자체를 수정합니다.
# 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), '
')이름으로 요소에 접근하기
x["name"] 또는 x[["name"]]을 사용해 이름이 있는 벡터의 요소에 접근할 수 있습니다. 단일 대괄호 []는 이름이 유지된 부분집합을 반환하고, [[]]는 이름 없이 값만 반환합니다.
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() 사용하기
setNames(x, nm)은 원본을 수정하지 않고 nm을 이름으로 설정한 x의 복사본을 반환합니다. 연산을 연결하는 과정에서 벡터에 이름을 지정하고 싶을 때 유용합니다.
# 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], '
')이름 수정하기
names(x)를 인덱싱하면 개별 이름을 변경할 수 있습니다. 전체 벡터를 다시 만들지 않고 일부 요소의 이름만 바꿔야 할 때 유용합니다.
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)seq()와 names()로 이름이 있는 시퀀스 만들기
seq()와 setNames()를 결합하면 이름이 있는 시퀀스를 만들 수 있습니다. 이름이 수치 값에 맥락을 더해 주는 월별 또는 주별 인덱스를 만들 때 특히 유용합니다.
# 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')]), '
')이름이 있는 벡터 필터링하기
이름이 있는 벡터는 논리형 인덱싱과 문자형 인덱싱을 모두 지원합니다. 이름으로 요소를 선택하는 동시에 값으로 필터링할 수 있어, 작은 조회 표를 표현하는 데 매우 편리합니다.
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))unname()으로 이름 제거하기
unname(x)은 벡터에서 모든 이름을 제거하고 값만 반환합니다. 이름이 없는 벡터를 기대하는 함수에 데이터를 전달하거나, 출력에서 이름이 시각적으로 복잡함을 더할 때 유용합니다.
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)), '
')조회 표로 사용하는 이름이 있는 벡터
이름이 있는 벡터의 가장 강력한 활용법 중 하나는 키를 값에 매핑하는 조회 표로 사용하는 것입니다. 여러 if-else 문을 연결하는 대신 이름이 있는 벡터를 사용하고 여기에 인덱싱하십시오.
# 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]], '
')이름이 있는 벡터: 핵심 정보
R에서 이름이 있는 벡터의 주요 기능을 요약하면 다음과 같습니다:
c(name = value, ...)로 만들거나names(x) <- c(...)로 이름 할당x['name']으로 이름을 사용해 접근(이름 유지),x[['name']]으로 접근(값만 반환)setNames(x, nm)은 원본을 수정하지 않고 이름이 설정된 복사본을 반환unname(x)은 모든 이름을 제거- 이름이 있는 벡터는 우아한 조회 표로 사용할 수 있어 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))빠른 확인
x가 이름이 있는 벡터일 때 x['key']와 x[['key']]의 차이는 무엇입니까?
복습: 이름이 있는 벡터
잘하셨습니다! 이번 레슨의 핵심 내용은 다음과 같습니다:
- 이름이 있는 벡터는 각 요소를 문자 레이블과 연결합니다.
c(name = val)구문으로 만들거나names(x) <- ...로 이름을 할당합니다.x['name']은 이름이 유지된 부분집합을 반환하고,x[['name']]은 값만 반환합니다.setNames()는 이름을 추가할 때 사용하는 함수형 방식(원본을 수정하지 않음)입니다.- 이름이 있는 벡터를 조회 표로 사용해 장황한 if-else 연결을 대체할 수 있습니다.
- 원시 값이 필요할 때는
unname()으로 이름을 제거합니다.
# 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)], '
')자주 묻는 질문
“이름 있는 벡터와 시퀀스” 강의는 무료인가요?
네 — “이름 있는 벡터와 시퀀스” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“이름 있는 벡터와 시퀀스”에서 뭘 배우나요?
읽기 쉬운 코드를 위해 벡터에 이름을 할당하고 이름에 접근합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
R Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“이름 있는 벡터와 시퀀스” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 정수 범위를 위한 콜론 연산자
- 사용자 지정 시퀀스를 위한 seq()
- 반복 값을 위한 rep()
- 이름 있는 벡터와 시퀀스