R 할줄 R지? #4 - 벡터 심화편

    인트로


    이전 시간에는 벡터를 사용하는 방법에 대해서 알아봤습니다. 사실 R은 다른 언어와 다르게 강력한 프로그래밍 기능이 있는 것이 아니고 대다수 R을 하는 이유는 데이터분석이기 때문에 초반에 배워야 되는 부분이 많지 않습니다.


    게다가 워낙 다양한 패키지(라이브러리들...)이 제공되고 있어서, 데이터만 쏙 넣으면 그래프가 출력이 되고 알아서 머신러닝이 돌아가고 등등 다양한 강력한 기능들을 제공해주기 때문에 초반에 기초를 확실히 잡아두는 것이 좋습니다.


    Java처럼 객체지향을 공부해야 되는 것이 아니니, 초반에 약간 지루할 수 있어도 변수, 벡터, 리스트 등의 데이터 구조를 확실히 익히셔야 할 것입니다. 오늘은 벡터를 조금 더 다양하게 다루는 방법에 대한 포스팅입니다. 저번 강의보다는 조금 더 흥미로울 수 있고, 반대로 말하자면 조금 더 어려울 수 있으니 이해가 안되는 부분은 댓글을 달아주면 확인되는대로 빠르게 답변 달아드리겠습니다.




    벡터(Vector) 심화


    연속된 수를 저장하는 매우 쉬운 방법을 R에서는 제공합니다. 예를 들어 50에서 70의 수를 저장하고 싶으시면 아래와 같이 하시면 됩니다.


    > a <- 50:70

    > a

    ## [1] 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

    ##은 결과입니다. [1] 은 결과의 위치를 뜻합니다.


    names 펑션을 사용하면, 벡터값에 이름을 지정할 수 있습니다.

    > # 90,85,70의 숫자형 벡터를 생성

    > score <- c(90, 85, 70)

    > names(score) <- c("Eng","Math","Kor")

    > score

    ## Eng Math  Kor 

       90   85   70 

    위와 같이, 90에는 Eng이라는 이름이, 85에는 Math라는 이름이, 70에는 Kor라는 이름이 매핑되었습니다.



    이름이 매핑이 된 상태라면, 이름을 이용해서 값을 가져올 수 있습니다.

    > # 이름으로 가져오기

    > score["Math"]

    ## Math 

        85 

    > score[c("Kor","Eng")]

    ## Kor Eng 

        70  90

    위와 같이, Math라고 하면 해당되는 값인 85가 출력이 되었고, 아래와 같이 벡터를 사용해서 여러개의 값을 호출할 수도 있습니다.



    정수형과 문자형을 같이 벡터로 만들면 정수형이 문자형으로 바뀌게 되니 주의하시기 바랍니다.

    > # 정수형과 문자형을 같이 넣을 경우

    > b <- c(1,2,3,"a","b","c")

    > b

    ## [1] "1" "2" "3" "a" "b" "c"




    배열안에 벡터 명령어를 사용하여, 필요한 위치의 값을 여러개 호출할 수 있습니다.

    > d <- c(5,10,15,20,25,30,35,40)

    > # 1,4,6번째 값 출력

    > d[c(1,4,6)]

    ## [1]  5 20 30



    시퀀스라는 펑션을 사용하게 되면, 아래와 같이 반복문을 수행할 수 있습니다.

    > # seq 펑션을 사용하여 1부터 7까지 3씩 증가한 값을 벡터로 생성

    > f <- seq(1,7,3)

    > f

    ## [1] 1 4 7



    시퀀스 펑션으로 벡터의 값을 여러개 가져올 수 있습니다.

    > # 1번부터 7번까지 3씩 값을 증가해서 출력 1,4,7 번째 출력

    > d[seq(1,7,3)]

    ## [1]  5 20 35



    특정 값을 제외하고 출력하는 기능도 존재합니다. 마이너스를 사용하면 해당 위치의 값을 제외하고 출력합니다.

    > # 4번째 값은 제외

    > d[-4]

    ## [1]  5 10 15 25 30 35 40



    벡터를 이용하여 여러개의 값도 제외할 수 있습니다.

    > # 1번째부터 3번째 값은 제외

    > d[-c(1:3)]

    ## [1] 20 25 30 35 40


    위의 내용들은 한번씩 따라하면 매우 쉽게 이해할 수 있을 것입니다. 혹시나 이해가 안되는 내용이 있으면 댓글 달아주시기 바랍니다.


    포스팅에 사용되어진 전체 R스크립트

    a <- 50:70

    a


    score <- c(90, 85, 70)

    names(score) <- c("Eng","Math","Kor")

    score



    # 이름으로 가져오기

    score["Math"]

    score[c("Kor","Eng")]


    # 정수형과 문자형을 같이 넣을 경우

    b <- c(1,2,3,"a","b","c")

    b


    d <- c(5,10,15,20,25,30,35,40)

    # 1,4,6번째 값 출력

    d[c(1,4,6)]


    # seq 펑션을 사용하여 1부터 7까지 3씩 증가한 값을 벡터로 생성

    f <- seq(1,7,3)

    f


    # 1번부터 7번까지 3씩 값을 증가해서 출력 1,4,7 번째 출력

    d[seq(1,7,3)]


    # 4번째 값은 제외

    d[-4]


    # 1번째부터 3번째 값은 제외

    d[-c(1:3)]


    댓글

    Designed by JB FACTORY