0Pricing
R Academy · 강의

이름 있는 벡터와 시퀀스

읽기 쉬운 코드를 위해 벡터에 이름을 할당하고 이름에 접근합니다.

이름 있는 벡터와 시퀀스은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 정수 범위를 위한 콜론 연산자
  2. 사용자 지정 시퀀스를 위한 seq()
  3. 반복 값을 위한 rep()
  4. 이름 있는 벡터와 시퀀스
← R Academy(으)로 돌아가기