728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


벡터는 R에서 가장 기본되는 자료형이다.

보통 R내부에서는 벡터라는 이름이 아니라 데이터 타입으로 부른다.

따라서 타입을 검사하면 숫자는 numeric, 문자열은 character로 나온다.

R에서 일반적인 모든 데이터는 벡터이며 벡터는 다른 언어로 따지면 일종의 배열이라고 할 수 있다.

그러나 배열 데이터형도 있으니까 살짝 미묘하다.

벡터의 차원은 1차원으로 분류되며 간단한 값조차 벡터이다.

그러니 일반적인 모든 값들은 벡터라고 할 수 있다.


v = 10

w = c(10)

x <- 10

y <- c(10)

z <- c(1,2,3,4,5,6,7,8,9)


R에서 변수의 선언 방식은 두가지가 있다.

<-와 =가 있으며 둘은 일반적인 상황에서는 같다.

그러나 R에서는 보통 <-를 권장하는데 그 이유는 =의 경우 일반인 입장에서 햇갈릴 수 있기 때문이다.

그리고 둘은 엄밀히 말하면 다르다. 앞으로 사용해 나가면 둘의 차이점을 알 수 있다.


벡터는 일종의 수학적으로 보면 1차원행렬과 같다고 할 수있다.

벡터는 c라는 지시자를 사용해서 여러가지의 값을 묶어서 다닐 수 있다.

이를 print로 호출하면 여러가지의 값을 함께 반환하게 된다.

그러면 요소 하나하나를 호출하려면 어떻게 할까?

방법은 아래와 같다.


vect <- c(1,2,3,4,5,6)

print(vect[1])

print(vect[3])

print(vect[length(vect)])


벡터의 원소 호출 - 벡터이름[원소 번호]

벡터의 길이 확인 - length()

위의 방법으로 벡터의 이름을 알 수 있고 또한 벡터의 길이도 알 수 있다.

위의 소스를 실행하면 결과는 다음과 같다.



원소번호는 1번에서 시작한다.

이를 당연하게 생각한다면 아마 프로그래밍을 접해본적이 없는 비전공자일 것이며

이를 이상하게 생각한다면 보통은 프로그래머일 것이다. 왜냐하면 대부분의 언어에서 인덱스넘버의 시작은 0이기 때문이다.

앞의 일을 당연하게 생각하던 이상하게 생각하던 어쨋던 R에서 인덱스 시작넘버는 1이다.


벡터끼리의 사칙연산은 어떻게 될까? 그것도 한번 생각해볼 일이다.


vect1 <- c(1,2,3,4,5,6)

vect2 <- c(1,2,3)


vect1 + vect2

vect1 - vect2

vect1 * vect2

vect1 / vect2


벡터끼리의 연산이 가능이나 한것일까? 당연하지만 벡터끼리의 연산은 가능하다.

대신 조건이 필요하다. 조건은 작은 크기의 벡터가 큰 벡터의 약수가 되야한다는 조건이다.

위의 조건에서보면 vect1의 크기는 6이고 vect2의 크기는 3이므로 vect2는 vect1의 약수이다.

이 조건을 만족할 경우 둘의 사칙 연산이 가능하다.


결과를 보면 알겠지만 계산 방식은 작은 벡터가 큰 벡터의 원소별로 계산을 한다.

말하기가 조금 힘든데 +를 예로보자 그러면 이렇게 연산되는걸 알 수 있다.

vect1[1]+vect2[1] , vect1[2]+vect2[2], vect1[3]+vect2[3]

vect1[4]+vect2[1], vect1[5]+vect2[2], vect1[6]+vect2[3]


벡터끼리의 연산을 알아봤는데 벡터끼리의 다른 연산들이 존재한다.

이는 함수로 제공하며 예시는 아래와 같다.


vect1 <- c(1,2,3,4,5,6)

vect2 <- c(1,2,3)


vect3 <- replace(vect1,c(2),c(5))

vect4 <- append(vect1,vect2)

vect5 <- append(vect1,vect2,after=c(3))


replace - 인덱스 번호끼리 원소를 교환한다.

append - 특정 벡터의 끝에 벡터를 추가한다. 만약 끝이 아니라 원하는 위치가 있다면 after=을 사용한다.

결과를 확인해보자.


'Programming > R' 카테고리의 다른 글

[R-06]리스트(list)  (0) 2017.11.18
[R-05]데이터 프레임(Data Frame)  (0) 2017.11.18
[R-04]행렬(matrix)  (0) 2017.11.18
[R-02]기본 연산자  (0) 2017.11.15
[R-01]Hello World  (0) 2017.11.15

+ Recent posts