본문 바로가기

R 기초

R의 자료구조(2) : 리스트, 속성, 인수

반응형
R의 자료구조(2)

이 자료는 R markdown에서 작성하였습니다.
참고문헌: 빅데이터 통계 분석과 그래픽용 프로그래밍 언어의 대표 주자! 오픈소스 R

리스트

  • 리스트(list)는 리스트를 포함하여 다른 타입의 원소들을 포함할 수 있다.
  • 리스트 생성: list()
simple_list <- list(1:4, rep(3,5), "cat")
str(simple_list)
## List of 3
##  $ : int [1:4] 1 2 3 4
##  $ : num [1:5] 3 3 3 3 3
##  $ : chr "cat"
other_list <- list(1:4, simple_list)
str(simple_list)
## List of 3
##  $ : int [1:4] 1 2 3 4
##  $ : num [1:5] 3 3 3 3 3
##  $ : chr "cat"
  • 리스트와 일반 벡터 결합: c()
new_list <- c(simple_list, c(3,4), seq(5,6))
new_list
## [[1]]
## [1] 1 2 3 4
## 
## [[2]]
## [1] 3 3 3 3 3
## 
## [[3]]
## [1] "cat"
## 
## [[4]]
## [1] 3
## 
## [[5]]
## [1] 4
## 
## [[6]]
## [1] 5
## 
## [[7]]
## [1] 6
  • 일반 벡터를 리스트로 강제 변환: as.list()
x <- c(1,3,5,10)
x_as_list <- as.list(x)
str(x_as_list)
## List of 4
##  $ : num 1
##  $ : num 3
##  $ : num 5
##  $ : num 10
  • 리스트 내의 원소 확인: 각괄호([])
simple_list[3]
## [[1]]
## [1] "cat"
  • 리스트 내의 원소가 맨처음 입력했던 객체 타입을 그대로 유지: 이중 각괄호([[]])
simple_list[1]
## [[1]]
## [1] 1 2 3 4
str(simple_list[1])
## List of 1
##  $ : int [1:4] 1 2 3 4
simple_list[[1]]
## [1] 1 2 3 4
str(simple_list[[1]])
##  int [1:4] 1 2 3 4
  • 리스트 내의 객체의 원소 확인: 이중 각괄호([[]]) 다음에 각괄호([])
simple_list[[1]][4]
## [1] 4

속성

  • 객체 타입 확인: class()
class(simple_list)
## [1] "list"
  • 행렬, 데이터프레임, 다차원 배열 등 높은 차수의 차원 확인: dim()
  • 벡터의 각 원소에 이름 부여: names()
y <- c(first=1, second=2, third=3, fourth=4)
y
##  first second  third fourth 
##      1      2      3      4
a1 <- c(1,2,3,4)
a2 <- c("1st", "2nd", "3rd", "4th")
names(a1) <- a2
a1
## 1st 2nd 3rd 4th 
##   1   2   3   4
  • 벡터의 각 원소의 이름 수정: setNames()
setNames(y, c("a", "b", "c", "d"))
## a b c d 
## 1 2 3 4
  • 이름이 부여되지 않으면 결측(NA)으로 처리
y <- setNames(y, c("a", "b", "c"))
names(y)
## [1] "a" "b" "c" NA
  • 이름이 하나도 부여하지 않은 벡터는 NULL을 리턴
names(x)
## NULL
  • 원소 이름 제거: unname(), NULL로 대체
unname(y)
## [1] 1 2 3 4
names(y) <- NULL
names(y)
## NULL

인수

  • 범주형 자료에서 문자형 테이터를 저장하는 프레임워크
drug_response <- c("placebo", "treatment", "placebo", "treatment")
drug_response <- factor(drug_response)
drug_response
## [1] placebo   treatment placebo   treatment
## Levels: placebo treatment
  • 수준(level)이라 부르는 특정한 값을 포함하는 벡터
  • 각 수준에 사용되는 정수값 확인: as.integer()
as.integer(drug_response)
## [1] 1 2 1 2
  • 새로운 수준 값 추가: factor() 함수의 levels 옵션
drug_response[4] <- "refused treatment"
## Warning in `[<-.factor`(`*tmp*`, 4, value = "refused treatment"): invalid
## factor level, NA generated
drug_response <- factor(drug_response, levels = c(levels(drug_response),"refused treatment"))
drug_response[4] <- "refused treatment"
drug_response
## [1] placebo           treatment         placebo           refused treatment
## Levels: placebo treatment refused treatment
as.integer(drug_response)
## [1] 1 2 1 3
반응형