본문 바로가기
R 프로그래밍/R basic

[R데이터구조]벡터(vector) 생성하기

by 찐남 2021. 7. 10.

1. Vector 설명

R에서 가장 기본이 되는 데이터 구조는 벡터(Vector)이다.

 

벡터(Vector)와 관련된 앞선 포스팅에서도 말했듯이,

벡터는 동일한 변수형을 가지는 1차원 데이터 구조이다.

숫자형 변수만 구성할 수 있는 게 아니란 얘기다.

 

(1)은 1개의 숫자형 변수(원소)를 가지는 벡터이고, 

(1, 2)은 2개의 숫자형 변수(원소)를 가지는 벡터이고, 

(1, 2, 3)은 3개의 숫자형 변수(원소)를 가지는 벡터이다.

 

유사하게 

("남성")은 1개의 문자형 변수(원소)를 가지는 벡터이고,

("남성","여성")은 2개의 숫자형 변수(원소)를 가지는 벡터이고, 

("남성", "여성", "Female")은 3개의 숫자형 변수(원소)를 가지는 벡터이다.

 

 

 



 

 

 

2. Vecor 생성

그럼 R에서 벡터를 생성시켜 보자 

R에서 벡터를 생성시키는 함수는 "c" 이다.

대문자가 아니라 소문자 이다.

(R은 대문자와 소문자를 구별한다. 꼭 참고하기 바란다.)

 

RStudio을 실행시키자.

(RStudio 설치방법은 RStudio설치하기를 참고하자)

 

숫자 1 2 3을 원소로 가지는 벡터를 생성해 보자.

 

test <- c(1, 2, 3)  # 원소 1 2 3 을 가지는 벡터를 생성해서 test object에 저장

print(test)          # test object 출력

 

위의 두 문장을 RStudio Console창(Rstudio 좌측 하단)에 입력해 실행시켜 보자.

아래 그림과 같이 출력됨을 확인할 수 있다.

test object에 1 2 3 이 저장되어 있음을 확인할 수 있다.

3개의 원소를 갖는 벡터 test 에서 특정 원소만 선택하고 싶을 땐, 

대괄호 "[]"를 활용하여 원하는 위치의 값을 적어주면 된다.

 

첫번째 원소만 선택해서 first object에 저장할려면,

first <- test[1]  # test object에서 첫번째 원소를 가져와 first object에 저장

와 같이 작성하면 된다.

같은 방식으로 두번째 원소만 선택해서 second object에 저장할려면,

second <- test[2] # test object에서 두번째 원소를 가져와 second object에 저장

와 같이 작성하면 된다.

그럼 첫번째 원소와 두번째 원소를 선택해서 both object에 저장할려면?

방금 배운 c함수를 사용하면 된다.

both <- test[c(1,2)] # test object에서 첫번째, 두번째 원소를 가져와 both object에 저장

와 같이 작성하면 된다.

c(1,2)의 결과물로 1 2 를 반환하게 되고, 

R 내부적으로 test[1 2] 즉, 첫번째 원소와 두번째 원소를 선택해서 그 값을 반환해 준다.

 

만약, 원소의 갯수가 매우 많은 벡터가 존재할 때,

특정 위치의 원소만 제외하고자 할 땐,

'-' 부호를 사용하면 된다.

 

위의 예제에서 3번째 원소를 제외하고, 저장하고 싶으면

test[-3]  # test object에서 세번째 원소를 제거

과 같이 표현해 주면 된다.

첫번째 원소인 1과 두번째 원소인 2가 출력됨을 확인할 수 있다.

 

이번엔 문자 "남성", "여성", "Female" 로 이루어진 벡터를 생성해 보자.

test_char <- c( "남성", "여성", "Female" ) # 원소 "남성" "여성" "Female"을 가지는 벡터를 생성해서 test_char object에 저장

print(test_char)  # test_char obect 출력

test_char object에 "남성" "여성" "Female" 이 저장되어 있음을 확인할 수 있다.

 

그럼 숫자로 이루어진 벡터 test 와 문자로 이루어진 벡터 test_char 를 결합하여 새로운 벡터를 생성해 보자.

결과는 어떻게 출력될 것인가?

바로 실행시키기 전에 예상해 보고, 그 결과가 같은지 실습해 보자.

 

test_tot <- c(test , test_char) # 숫자 원소로 이루어진 벡터 test 와 문자 원소로 이루어진 벡터 test_char를 결합하여 새로운 벡터 test_tot object 생성

 

혹시 

1 2 3 "남성" "여성" "Female" 

로 출력됐을 것이라고 생각하신 분들도 계실 것이다.

 

아래 문장을 실행시켜 결과를 확인해 보자.

print(test_tot) # test_tot object 출력

결과는 모든 원소가 문자형으로 변환되어 저장되고, 출력됨을 확인할 수 있다.

왜 이런 출력 결과가 나왔을까?

앞선 포스팅에서 설명했듯이 R에서 벡터는 모두 동일한 형태의 원소를 갖는다고 했다.

그래서 숫자와 문자형 변수가 혼합되어 결합되면, 그 결과는 모든 원소가 문자형으로 변경된 것이다.

 

혹시 가장 마지막에 입력된 원소의 형태로 변환된다고 생각할 수 있다.

그럼, 아래 2 문장을 실행시켜 보자.

test_tot <- c(test_char, test) # 문자 원소로 이루어진 벡터 test_char와 숫자 원소로 이루어진 벡터 test를 결합하여 새로운 벡터 test_tot object 생성
print(test_tot) # test_tot object 출력

결과는 마찬가지로 모두 문자형으로 변환되었다.

즉, 숫자형과 문자형이 혼합되어 있으면 무조건 문자형으로 변환되어 새로운 벡터가 생성됨을 확인할 수 있다.

 

잊지말자! 중요한 개념이다! (초기에 개념을 잘 잡길 바란다.)

 

다음 포스팅에서는 행렬(Matrix)을 생성하는 함수에 대해서 알아보도록 하자!

 



반응형

댓글