워라밸 중독자

[R] 1차원 데이터 구조 - 벡터(vector) 본문

코딩, 딱 지금이 시작할때! (코딱지)

[R] 1차원 데이터 구조 - 벡터(vector)

Ufungi 2022. 12. 26. 21:12

벡터(vector)란?

동일한 자료형(정수, 실수, 문자, 논리)의 값이 연속적으로 나열된 자료구조이다. 엑셀에서 '한 행'에 해당하며 일차원 데이터를 저장한다.

 

벡터 만들기

c()

concatenate의 첫 글자를 딴 것으로 각 요소(element)를 일렬로 합쳐서 벡터를 만들어주는 기본 함수이다.

# 실수형 벡터
> x1 <- c(1, 2, 5)
> x1
[1] 1 2 5

# 문자형 벡터
> x2 <- c("a", "b", "c")
> x2
[1] "a" "b" "c"

c()를 이용해 벡터끼리도 합칠 수 있다.

#두 벡터 연결
> c(x1,x2)
[1] "1" "2" "5" "a" "b" "c"

 

그런데 실수형 벡터인 x1 을 문자형 벡터인 x2와 합치자 문자형 벡터로 바뀌는 것을 볼 수 있다. 이는 벡터가 동일한 자료형만을 허용하기 때문이다. 따라서 새로운 벡터에 하나 이상의 문자가 포함되므로 모든 숫자는 더 유연성이 높은 자료형인 문자로 인식된다.

 

:

:의 왼쪽 값부터 오른쪽 값까지를 포함하여 1의 간격의 "정수형(int)" 벡터를 만든다.

*참고로 str() 변수의 자료형, 데이터 길이, 데이터 값을 요약해서 보여주는 utils 패키지의 함수이다.

> x <- c(1:20)
> x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
 
> str(x)
 int [1:20] 1 2 3 4 5 6 7 8 9 10 ...

seq()

seq(a, b, by = n) 과 같이 사용하며, 실수 a 부터 b 까지 n의 간격으로 나열하는 함수로 : 연산자와 달리 "실수형(num)" 벡터를 만든다.

> x <- seq(1, 5, by = 2)
> x
[1] 1 3 5

> str(x)
 num [1:3] 1 3 5

간격을 2.1로 해보았다.

> x <- seq(1, 5, by = 2.1)
> x
[1] 1.0 3.1

3.1 다음 값인 5.2 는 상한선인 5 보다 크므로 제외되었다.

rep()

rep(x, each = n, times = m) 와 같이 쓴다.

  • each 매개변수: 벡터 x 안의 값을 n 번 반복한다. 
  • time 매개변수: 한 사이클을 m번 반복한다.

 

1부터 3까지를 포함하는 벡터를 each와 times 를 써서 3번씩 반복해봤다.

> x <- rep(1:3, times = 3)
> x
[1] 1 2 3 1 2 3 1 2 3

> x <- rep(1:3, each = 3)
> x
[1] 1 1 1 2 2 2 3 3 3

times 는 1, 2, 3 을 한 세트로 3 반복, each 는 1, 2, 3 을 각각 3번씩 반복한다.

 

문자 자료형 벡터에도 사용 가능하다.

> x <- rep(c("a","b","c"), each = 3, times = 2)
> x
 [1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "a" "a" "a" "b" "b" "b" "c" "c" "c"