R 할줄 R지? #3 - 벡터(Vector) 이해하기

    인트로


    이전 시간에 R의 기본 구조와 변수에 대한 설명을 하였습니다. 오늘은 R을 좀 더 복잡한 데이터 타입인 벡터에 대해서 이해를 해보로록 하겠습니다.


    이전 강의




    벡터(Vector)


    학창시절 수학 시간에 졸지만 않았다면 벡터(Vector)라는 것을 다들 들어보셨을 겁니다. 누구는 저 말을 보자마자 R을 끄고 싶을지 모르겠지만 최소한 컴퓨터에서는 수학시간보다는 재미있으니 조금만 참고 이 개념을 이해하셨으면 좋겠습니다.


    일단 벡터는 같은 데이터의 타입의 배열 데이터를 의미합니다. 즉, 숫자들이라면 숫자의 모음... 문자형이라면 문자들의 배열형을 뜻합니다.



    벡터 생성

    x <- c(1,5,7)

    x

    ## 1 5 7

    ## 은 결과 데이터


    벡터는 보시는 대로, c와 추가하고 싶은 배열 값을 지정하여 벡터를 생성할 수 있습니다. 위의 내용을 실행하여, x의 값을 출력해보면 1, 5, 7이라는 배열이 x 변수에 저장이 된 것을 확인할 수 있습니다.



    특정 위치값 호출

    x[2]

    ## 5


    x의 특정 값을 불러 들일려면 시퀀스(순서값)를 지정하여 불러들일 수 있습니다. 위의 예시는 x의 2번째 값을 호출하였는데 결과처럼 5라는 값이 나온 것을 알 수 있습니다.



    특정 위치값 호출, 시작 ~ 종료

    x[2:3]

    ## 5 7


    시퀀스를 하나만 지정하지 않고 여러개 지정이 가능합니다. 예시처럼 시작위치부터 종료 위치를 지정하게 되면 해당되는 모든 값을 호출 할 수 있습니다.



    배열 추가

    x[4]
    ## NA


    x[4] = 1000

    x

    ## 1    5    7 1000


    현재 예시로 표현한 배열은 3개(3,5,7) 밖에 없기 때문에 x[4]와 같이 없는 값을 호출하게 되면 NA라는 없는 값이 호출됩니다. NA는 Not Available이라는 약어로 결측치(Missing Value)를 의미합니다. 


    다른 프로그램 언어와 다르게 R은 자연스럽게 동적으로 배열을 확장시킬 수 있습니다. 위와 같이 x[4]에 1000이라는 값을 넣으면 4의 위치에 값이 추가됩니다. 기존의 언어들은 배열의 크기가 고정되어 있고, 동적으로 선언을 하려면 리스트 방식을 사용하는 것에 비해서 상당히 R은 쉽습니다.



    배열의 길이값 확인

    length(x)

    ## 4


    length 펑션을 사용하면, 지정된 배열의 길이를 알 수 있습니다. 1,5,7,1000 즉 4개의 길이를 가진 배열이기 때문에 4가 리턴된 것을 확인할 수 있습니다.



    배열 추가

    x = append(x, c(8,10))

    x

    ## 1    5    7 1000    8   10


    append 펑션을 사용하여, 기존의 배열에 새로운 배열을 추가할 수 있습니다. 

    사용법은 append(배열, 신규배열) 입니다. 위 예제에서 보는 것처럼 8, 10의 값이 추가된 것을 확인 할 수 있습니다.



    배열 반복

    rep(x, 3)

    x

    ## 1    5    7 1000    8   10    1    5    7 1000    8   10    1    5    7 1000    8   10


    rep(repeat) 이라는 명령어를 사용하여, 배열을 반복 호출할 수 있습니다. 

    사용법은 rep(배열, 반복횟수) 입니다.



    배열 반복, each 활용

    rep(x, 1, each=3)

    ## 1    1    1    5    5    5    7    7    7 1000 1000 1000    8    8    8   10   10   10


    rep 명령어에 each를 인자값으로 추가할 수 있습니다.

    rep(x, 1, each=3)의 의미는 x 배열을 연속으로 3번씩 출력하며 한바퀴만 돌리라는 의미입니다. rep(x, 3)다른 점이 보이시나요? 만약에 rep(x, 2, each=3)으로 한다면 아래와 같이 출력이 됩니다.


    1    1    1    5    5    5    7    7    7 1000 1000 1000    8    8    8   10   10   10   1    1    1    5    5    5    7    7    7 1000 1000 1000    8    8    8   10   10   10


    each를 추가하면 아무튼 루프를 하는 동안 반복으로 특정 위치의 값을 연속으로 출력하는 거라고 이해하시면 됩니다.



    설명에 활용된 전체 R 스크립트

    x <- c(1,5,7)

    x

    x[2]

    x[2:3]

    x[4]

    x[4] = 1000

    x


    # 배열의 길이값을 리턴

    length(x)


    # 배열을 추가

    x = append(x, c(8,10))

    x


    # 전체 배열을 3번 반복

    rep(x, 3)

    x


    # 전체 배열을 반복하지 않지만, 값을 연속으로 3번 출력한다.

    rep(x, 1, each=3)


    # 전체 배열을 2번 반복하며, 값을 연속으로 3번 출력한다.

    rep(x, 2, each=3)


    '프로그램언어 > R' 카테고리의 다른 글

    R 할줄 R지? #5 - 벡터 연산편  (0) 2019.01.16
    R 할줄 R지? #4 - 벡터 심화편  (0) 2018.12.27
    R강의 #2 - 변수 이해하기편  (0) 2018.08.29
    R강의 #1 - 데이터 기본구조편  (0) 2018.08.28
    R의 도움말 확인법  (0) 2017.08.16

    댓글

    Designed by JB FACTORY