본문 바로가기
R

[R] 벡터(Vector) 기본함수 및 인덱싱

by JKyun 2017. 1. 27.

안녕하세요! 우주신입니다.


오늘은 데이터 구조 중 하나인 벡터(Vector)에 대해 배워보겠습니다.


앞시간에 설명했듯이, 벡터는 동일한 유형의 데이터로 구성되어 있는 1차원 데이터 구조입니다.


가장 기본적인 데이터 구조로서 정말 많이 쓰이죠.


벡터와 관련해 많은 기능과 함수가 존재하지만 가장 기초적인 것부터 살펴 보겠습니다.




[ 사칙 연산 ]


R에서 사용하는 연산자는 +(덧셈), -(뺄셈), *(곱셈), /(나눗셈), %/%(정수나눗셈), %%(나머지), ^(제곱) 등이 있습니다.

우선순위는 괄호, 지수 및 근호, 곱하기와 나누기, 더하기와 빼기 순서인 표준적인 연산의 우선순위와 같습니다.



연산을 하기 위해 길이가 4인 벡터 X와 Y를 만든 후, +(덧셈)과 *(곱셈)을 해봤습니다.

나머지 연산자들도 직접 해보시면 금방 이해가 갈 것 입니다.

R에서 나머지 연산은 %가 아니라 %% 입니다. (7/3의 나머지는 1이고 그 외는 다 나머지가 0이죠.)


당연히 위에 나온 식들은 연산 결과를 나타낼 뿐, 저장 되지 않겠죠?

저장하기 위해선 밑과 같이 별도의 벡터 (Sum)에 그 값을 넣어줘야 합니다.




[기본 함수]


c( )함수를 통해 벡터를 가지고 새로운 벡터를 정의할 수도 있습니다.

X2 결과를 보면 벡터 X 두개가 합쳐서 출력 되는 것을 볼 수 있습니다.


작업을 하다보면 엄청난 양의 수를 다뤄야 할 때가 많습니다. 이 때 모든 수를 일일이 입력하기에는  너무 귀찮죠ㅠ

이럴 땐 밑과 같이 ':' 기호를 사용하면 됩니다!

Z <- c(1:20) 코드를 실행하면 Z에 1부터 20까지 입력됩니다. 정말 편리하죠?


길이가 서로 다른 X와 Z를 더해도 R에서는 X의 길이를 Z에 맞춰 연산을 가능하게 합니다.

1, 2, 3, 4로 구성된 X가 Z의 길이에 맞춰 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4로 변환되어 연산이 됐습니다.


참고로, 길이는 length( )함수를 통해 확인할 수 있습니다.


좀 더 복잡한 수식을 넣기 위해  seq( ), rep( ) 함수를 이용해보죠.

seq(1부터 30까지 4 간격으로 출력하라)


rep(1, 2, 3을 각각 3번씩 출력하라)


그 다음 줄에는 두 함수를 가지고 응용해봤습니다.

-1부터 10까지 3간격으로 출력하라 > 1, 4, 7, 10

-1, 4, 7, 10을 각각 1, 2, 3, 4번씩 출력하라



[인덱싱]


R에서 데이터 일부분을 선택하는 작업을 인덱싱이라고 합니다. 부수지기로 사용하는 인덱싱은 대괄호[ ]로 나타냅니다.

R에서는 아주 강력한 무기입니다. 한번 살펴보죠.


좀 전에 Z에 1부터 20까지의 숫자를 넣었죠?


인덱싱을 통해 원하는 숫자를 출력해보겠습니다.

-Z[2]: Z의 두번째 구성요소 2를 가리켜라.

-Z[c(1, 3)]: Z의 첫번째와 세번째 구성요소를 가리켜라.  ( Z[1, 3]이 아닙니다. 실수 주의 )

-Z[10:13]: Z의 10번째부터 13번째 구성요소를 가리켜라.

-Z[-10:-13]: Z의 10번째부터 13번째 구성요소를 제외하고 나머지 구성요소를 가리켜라.

-Z[Z>10]: Z의 구성요소 중 10보다 큰 숫자를 가리켜라.

-X[c(TRUE, FALSE, TRUE, FALSE)]: X의 구성요소 중 TRUE 있는 위치의 구성요소를 가리켜라.





끝.


꼭 직접 연습해보시길 바랍니다.


수고하셨습니다.





댓글