트랙
/
R
R
/
학습 과정
/
names 속성
na

names 속성 에서 R

1개의 연습 문제

names 속성 소개

벡터의 원소에는 이름을 붙일 수 있어요. 그러면 다룰 때 더 편리할 때가 많아요.

이름 붙이기

벡터에 이름을 추가하는 방법은 세 가지가 있어요.

  1. 벡터를 만들 때
> work_days <- c(Mon = TRUE, Tue = TRUE, Wed = TRUE, Thu = TRUE, Fri = TRUE, Sat = FALSE, Sun = FALSE)
> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
  1. names()에 문자형 벡터를 할당할 때
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> names(months) <- month.abb
> months
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
 31  28  31  30  31  30  31  31  30  31  30  31 
  1. setNames()를 사용할 때
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> setNames(months, month.name)
  January  February     March     April       May      June      July    August September   October  November  December 
       31        28        31        30        31        30        31        31        30        31        30        31 

제거하기

이름이 더 이상 필요 없다면 NULL로 설정해서 제거할 수 있어요.

> work_days
  Mon   Tue   Wed   Thu   Fri   Sat   Sun 
 TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE 
> names(work_days) <- NULL
> work_days
[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE

unname() 함수도 같은 일을 해요. 어쩌면 의도를 더 분명하게 보여줄 수도 있어요.

이름 활용하기

names() 함수는 이름을 설정할 수도 있고 가져올 수도 있어요.

> names(months) <- month.abb
> names(months)[1:3]
[1] "Jan" "Feb" "Mar"

위치 인덱스 대신 이름을 사용할 수 있어요. 이때는 따옴표가 필요해요.

> months[c("Jul", "Aug")]
Jul Aug 
 31  31 

이런 인덱싱이 제대로 동작하게 하려면 이름이 중복되지 않고 빠진 이름도 없도록 하는 게 좋아요. 하지만 R이 중복을 강제로 막지는 않아요.

일반적인 벡터 연산도 그대로 동작하고, 말이 되는 경우라면 이름도 보통 그대로 유지돼요.

> months[months == 30]
Apr Jun Sep Nov 
 30  30  30  30 

> sum(months)
[1] 365  # no meaningful names possible

심화 주제

vectors를 비롯한 많은 R 객체에는 임의의 속성을 붙일 수 있어요. names 속성도 그중 하나일 뿐이지만, 특히 흔하고 중요한 예시예요.

실제로 이름은 벡터에서 가끔 유용하지만 꼭 필요한 경우는 거의 없어요. names-attribute는 lists와 dataframes처럼 더 복잡한 구조에서 훨씬 중요해져요. 앞으로 나올 개념에서 살펴볼게요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

names 속성 배우기