091
[R] 자료구조(2): 리스트(List) & 팩터(Factor) 본문
(2) List
- 서로 다른 타입을 가지는 1차원 구조를 가지며, R에서 가장 유연한 자료구조입니다. list(...)를 사용하여 선언하여 사용합니다.
my.info <- list(name="Tom",
age=60,
status=TRUE)
my.info
#$name
#[1] "Tom"
#
#$age
#[1] 60
#
#$status
#[1] TRUE
-> 위처럼 이름을 지정하지 않는 경우에는 $name부분에 [[1]], $age부분에 [[2]]가 적혀있습니다.
my.info["name"]
#$name
#[1] "Tom"
class(my.info["name"]) #[1] "list"
my.info[["name"]] #[1] "Tom"
class(my.info[["name"]]) #[1] "character"
my.info$name #[1] "Tom"
class(my.info$name) #[1] "character"
-> 리스트에서 값을 추출할 때는 벡터와는 다르게 [[]]을 통해 해야하는데, 이게 바로 리스트의 계층 구조와 밀접한 연관을 갖습니다. 리스트에서는 [](Single Bracket)는 계층을 유지하며 리스트에서 리스트를 떼어내는 것으로, 여전히 list형태입니다. 그래서 이 값을 연산하려고 할 때 에러가 납니다. 그래서 [[]](Double Bracket)을 사용하여 내부에 있는 실제 값으로 접근해야 연산이 가능해집니다.
(3) Factor
- 범주형 데이터를 표현하는 자료구조로, 정수와 levels 속성으로 저장됩니다. 그니까 대외적으로는 문자열 벡터이지만, 내부에서는 정수로 구성되어있는 것입니다.
colors <- c("red","green","blue","red","green")
print(colors)#[1] "red" "green" "blue" "red" "green"
levels(colors) #아직 factor가 아니라서 NULL
table(colors)
#colors
#blue green red
# 1 2 2
as.integer(colors) #[1] NA NA NA NA NA
colors.f <- factor(colors)
colors.f
#[1] red green blue red green
#Levels: blue green red
levels(colors.f) #[1] "blue" "green" "red"
table(colors.f)
#colors.f
#blue green red
# 1 2 2
as.integer(colors.f) #[1] 3 2 1 3 2
-> R Studio를 사용할 때 글자 색이 칠해진 이유는 stntax highlighting 기능으로, 코드 편집기가 알아서 문자열 안의 단어를 인식해서 색칠을 해주기 때문에 색이 나오는 시각적 편의 기능입니다. 실제 데이터 값과는 무관합니다.
-> colors는 벡터로, levels가 없고 정수로 변경할 때 NA가 나옵니다. 하지만 colors.f의 경우, print해보면, Levels가 같이 저장되어있고 levels=c(...)로 지정해주지 않는 경우, 알파벳순으로 자동 정렬되어 blue green red 순으로 저장됩니다. table()는 빈도수를 확인하는 것으로, vector와 factor의 내부 내용이 같기 때문에 이름을 제외하고는 같게 나옵니다. factor는 내부적으로 정수로 저장되기 때문에 첫번째 levels부터 1로 지정한뒤 내부에서 저장된 값으로 정수변환을 해줍니다.
Q. NA는 결측치를 의미하는거 아닌가요? 왜 이 경우에 NA가 나오나요?
A. NA는 정보없음, 해당사항 없음을 의미하기 때문에 character vector를 변환 시 변환이 불가능해 NA가 나옵니다.
'Programming Language > R' 카테고리의 다른 글
| [R] 기초문법(조건문, 반복문, 함수) (0) | 2026.04.06 |
|---|---|
| [R] 파일 데이터 읽기/쓰기 (0) | 2026.04.06 |
| [R] 자료구조(3): 매트릭스(Matrix) & 데이터프레임(Dataframe) (0) | 2026.04.01 |
| [R] 자료구조(1): 벡터(Vector) (0) | 2026.04.01 |
| [R] 기초문법(연산자, 변수, 기본 자료형) (0) | 2026.03.29 |
