컴퓨터공학/R programming

[3] R의 자료구조(R Data Structure)

Jake217 2019. 5. 21. 19:00

C/C++에서는 배열(array), 링크드리스트(linked list), 포인터(pointer)를 이용하여 Data에 접근하듯이

R에서도 자료구조를 이용하여 data에 접근합니다.

 

R의 자료구조 종류에 대하여 알아보겠습니다.

 

1. Vector

2. Matrix

3. List

4. Data Frame

 

크게 4가지로 나뉘어 집니다.

 

1. Vector

: 같은 data type을 가진 data들이 한 줄로 줄 서 있다고 생각하면 됩니다!

ex) [1] [2] [3] [4] [5]

     a   b   c   d   e

문자 a부터 e까지, 총 5칸 짜리 방에 1개씩 들어가 있다고 보시면 됩니다.

C++에서 1차원 배열이라고 생각하면 됩니다.

*주의할 점! 꼭 같은 data type만 저장이 가능합니다. a 1 b 3 c 이런식으로는 불가능 합니다.

※ 함수 사용 시 : sapply() 사용

 

2. Matrix

: Vector와 마찬가지로 같은 data type을 가진 data들로 이루어지지만,

한 줄로 서있는 Vector들이 여러개 합쳐져 있다고 생각하시면 됩니다.

C++에서 2차원 배열과 같은 기능이죠.

ex)    [1] [2] [3] [4] [5]

   [1]  a   c   e   g   i

   [2]  b   d   f    h    j

문자 10개를 a~e까지는 1번째 row에, f~j까지는 2번째 row에 저장하여

2개의 row가 만나 하나의 Matrix를 이루는 구조입니다.

C++의 경우에는 f에 접근하기 위해서는 array[2][1]로 사용하듯 행과 열로 이루어진 2차원 배열입니다.

※ 함수 사용 시 : apply() 사용

 

기본적으로 열(세로) 순서대로 들어가게 됩니다.

행(가로) 순서대로 값을 입력하고 싶은 경우, matrix() 함수 parameter에서 byrow=T 입력하면 됩니다.

 

3. List

: Vector와 Matrix의 단점은 같은 data type만 저장 가능하다는 것이지만, List의 경우에는 이 단점을 보완할 수 있습니다.

서로 다른 data type의 data들이 저장 가능합니다!

Key : value 형태로 구성해야 합니다.

웹프로그래밍 했을 당시 json이 key-value pair였던 것 같은데..기억이 가물가물 하네요ㅠㅠ

ex) var1 <- list( x = 1:2, y=c("b", "c"), z= 3:6)

결과화면 : $x 1 2 $y b c $z 3 4 5 6

key값이 먼저 나오고, 그 key 값에 해당하는 value들이 표시되는 format입니다!

※ 함수 사용 시 : lapply() 사용

4. Data Frame

: List와 Vector의 혼합형으로 Excel Sheet라고 생각하면 됩니다.

Data Frame도 마찬가지로, 서로 다른 data type을 2차원 배열로 구성하는 것입니다.

Data Frame을 이용하여 사용할 수 있는 함수도 광범위해서 Data Frame은 추후 다시 정리하겠습니다.

※ 함수 사용 시 : apply(), tapply() 사용