[R] R의 Data Structure

2 minute read

[R] R의 Data structure

데이터 구조 종류

  • Scalar : element가 1개인 vector이다.

    1# scalar 만들기
    2a <- 'a'
    3alphabet <- 'abcdefg'
    4num <- 1
    

  • Vector : 같은 종류의 element가 여러개 들어 있는 1차원 matrix이다.

    1# vector 만들기
    2table <- c('a', 'b')
    3table <- c(1, 2, 3, 5)
    4bool <- c(TRUE, FALSE)
    

  • Matrix : 2차원으로 된 배열. 일반적이 표 데이터를 생각하면 된다.

    1# matrix 만들기
    2# 2 by 3 행렬 생성
    3> mat <- matrix(c("a", "b", "c", "d", "e", "f"), nrow = 2, ncol = 3)
    4> mat
    5    [,1] [,2] [,3]
    6[1,] "a"  "c"  "e" 
    7[2,] "b"  "d"  "f" 
    

  • Array : 차원이 matrix 보다 많다. Matrix는 2차원(행, 열)인데 비해 배열은 그 이상 차원이 형성될 수 있다.

     1# array 만들기
     2> animal <- c("dog", "cat", "rabbit")
     3> feed <- c("meat", "fish", "carrot")
     4> jump <- c("3", "2", "1")
     5> arr <- array(data = c(animal, feed, jump), dim = c(1,3,3), dimnames = list('value', c(1, 2, 3), c('animal','feed','jump')))
     6
     7# array(c(vector1, vector2, vector3), dim = c(1,3,3), dimnames = list(row.names, column.names, matrix.names))
     8
     9> arr
    10, , animal
    11
    12      1     2     3       
    13value "dog" "cat" "rabbit"
    14
    15, , feed
    16
    17      1      2      3       
    18value "meat" "fish" "carrot"
    19
    20, , jump
    21
    22      1   2   3  
    23value "3" "2" "1" 
    

  • Data Frame : matrix와 유사한데, 유형이 다른 데이터를 함께 넣을 수 있다.

    1> animal <- c("dog", "cat", "rabbit")
    2> feed <- c("meat", "fish", "carrot")
    3> jump <- c("3", "2", "1")
    4> dat <- data.frame(animal, feed, jump)
    5> dat
    6  animal   feed jump
    71    dog   meat    3
    82    cat   fish    2
    93 rabbit carrot    1
    

  • List :서열화된 성분들의 집합체이다. 예시를 보는 게 빠르다.

     1> title <- "Phone Book"
     2> name <- c("Tom", "Jack", "Jean", "Mike")
     3> phone <- c("010-1234-1234", "010-2345-5678", "010-9876-5673")
     4> index <- c(1, 2, 3)
     5> etc <- matrix(1:10, nrow=2)
     6
     7> mylist <-list(title = title, info = name, phone, index, etc)
     8> mylist
     9$title
    10[1] "Phone Book"
    11
    12$info
    13[1] "Tom"  "Jack" "Jean" "Mike"
    14
    15[[3]]
    16[1] "010-1234-1234" "010-2345-5678" "010-9876-5673"
    17
    18[[4]]
    19[1] 1 2 3
    20
    21[[5]]
    22     [,1] [,2] [,3] [,4] [,5]
    23[1,]    1    3    5    7    9
    24[2,]    2    4    6    8   10
    25
    26> mylist$title
    27[1] "Phone Book"
    28
    29> mylist[[3]]
    30[1] "010-1234-1234" "010-2345-5678" "010-9876-5673"
    31
    32> mylist$info[1]
    33[1] "Tom"