본문 바로가기
R/R 기본

[R 3] 벡터와 시퀀스

by 자유데이터 2018. 11. 13.
반응형

1.벡터
R에서 사용하는 벡터는 다른 프로그래밍 언어에서 흔히 접하는 배열의 개념이다. c()를 사용해 벡터를 만들며,
각 셀에 이름을 부여할 수 있는데, 이때는 names()를 사용한다. 그리고 벡터는 중첩을 허용하지 않는다.

글로 설명하는 것보다 예제를 따라하면서 익히는 것이 빠르다.
예제를 통해 벡터를 한 번에 정리해보자.

ex)
> (x <- c(1,2,3,4,5))        #실행문을 ( ) 안에 넣으면 print 함수까지 발동되어 결과값이 출력된다.
[1] 1 2 3 4 5

> (x <- c(1, "a" , 2))       #벡터는 한 가지 유형의 스칼라 타입만 가능한다. 따라서 서로 타입이 다를 경우 자동 형 변환한다.
[1] "1" "a" "2"

> x <- c("a", "b", "c")     #인덱스와 시퀀스를 이용한 다양한 출력 방법
> x[2]
[1] "b"
> x[-1]
[1] "b" "c"
> x[c(1,3)]
[1] "a" "c"
> x[1:3]
[1] "a" "b" "c"

> y <- c(2,4,6)                         
> names(y) <- c("q", "w", "e" )    #셀에 이름 넣기
> y
q w e
2 4 6
> y[c("w","e")]
w e
4 6
> names(y)[2]
[1] "w"

> z <- c(1,3,5)
> length(z)
[1] 3
> nrow(z                              #소문자 rnow()는 행렬만 가능
NULL
>NROW(z)                              #대문자는 벡터, 행렬 모두 가능
[1] 3

> identical(c(1,2), c(1,2))            #identical() 함수로 두 벡터가 같은 값을 담고 있는지 알 수 있다.
[1] TRUE

> "a" %in% c("a", "b")               # %in%은 메칭 연산자로 어떤 값이 벡터에 포함되어 있는지 알려준다.
[1] TRUE

벡터 전체 값에 연산이 가능한데, 벡터를 마치 하나의 숫자처럼 생각하고 연산이 수행하기 때문에 루프를 돌지 않고 계산된다.
각 요소별로 연산을 수행하는 경우보다 실행 속도가 빠르다.
> x <- c( 1,2,3)
> x+1
[1] 2 3 4

> c(1,2,3) == c(1,2,3)                # if문에서는 하나의 진리값을 원하기 때문에 identical() 함수를 사용해야 한다.
[1] TRUE TRUE TRUE
> c(1,2,3) != c(1,2,4)
[1] FALSE FALSE TRUE


union 합집합
intersect 교집합
setdiff 차집합



2.시퀀스
seq(
  from,    #시작 값
  to,       #끝 값
  by       #증가치 (default = 1)
)

ex)
> seq(9, 6)
[1] 9 8 7 6
> seq(2, 9, 3)
[1] 2 5 8

> 4:9                #1씩 증가 혹은 감소인 경우 start:end 의 축약형으로 표현 가능하다.
[1] 4 5 6 7 8 9




3.반복 벡터
rep(
  x,                  #반복할 값이 저장된 벡터
  times,            #전체 벡터의 반복 횟수
  each              #개별 값의 반복 횟수
)

ex)
> rep(1:2, times=3)
[1] 1 2 1 2 1 2
>rep(1:2, each=3)
[1] 1 1 1 2 2 2
>rep(1:2, each=3, times=2)

[1] 1 1 1 2 2 2 1 1 1 2 2 2


반응형

댓글