인포위드

R프로그래밍 vector(벡터) - rep() , seq() 함수 이용 본문

R

R프로그래밍 vector(벡터) - rep() , seq() 함수 이용

JSE99 2020. 3. 22. 22:31

안녕하세요 인포위드입니다.

이번 포스팅에서는 R프로그래밍의 기초이자 시작이라고 할수있는 R객체에 대해서 알아볼게요.

이번 포스팅을 기점으로 제 블로그에 R, Python 등 코딩관련 자료를 업로드를 진행할 계획 입니다!

 

일단 R객체에는 여러가지 종류가 있습니다. 

atomic(상수), vector(벡터), matrix(행렬), list(리스트),

data.frame(데이터프레임), function(함수),operator(연산자) 

이렇게 여러가지 종류의 R객체가 존재합니다.

 

해당 포스팅에서는 vector에 대해서 알아볼 예정인데

vector는 vector객체중에서도

rep(), seq()같은 반복 구문에 대해서 알아보도록 할게요.

1. vector(벡터)란 무엇인가?

R프로그래밍에서 vector(벡터)는 한개 이상의 원소로 구성된 자료를 의미합니다.

벡터를 구성하는 원소들은 모두 DATA TYPE이 같아야하는 것이 기본규칙입니다.

 

그러면 벡터를 실제로 만들어보도록 할게요.

 

c(a,b,c) : 벡터 또는 상수를 연결하는 코드입니다.

10 = ' : ' 은 1~10 처럼 연속하는 정수벡터를 만드는 연산자입니다.


a1 = c(1,2,3,4)
a3 = c("aaa", "bbb", "ddd")
a2 = 5:10
a1 = c(a1, 0 ,a2)

b1
> b1
 [1]  1  2  3  4  0  5  6  7  8  9 10

a1은 오직 숫자라는 data type으로 이루어진 벡터입니다. 

위에서 설명한것처럼 벡터는 data type 동일해야 합니다.

a3처럼 문자형 벡터를 생성하고 싶다면 " " 을 이용해서 벡터를 생성해주시면 됩니다.

 

계속해서 벡터구간에서 data type을 언급하는데 

예를들어 (3,4,"c","d") 처럼 숫자형과 문자형이 섞인 벡터는 잘못된 벡터라고 할수있습니다.

 

 

#2-1 Vector(벡터) - rep() , 같은수 반복하는 코드

벡터를 만들기위한 코드중 rep라는 코드에 대해서 알아보도록 할게요.

rep는 같은 수를 반복 실행시켜주는 코드입니다.


rep(1,8)
> rep(1,8)
[1] 1 1 1 1 1 1 1 1

이런식으로 rep(1,8)이라는 코드를 실행시키면 1을 8번 반복 실행시킨 결과값을 산출해줍니다.


rep(c(2,4), each=3)
> rep(c(2,4), each=3)
[1] 2 2 2 4 4 4

rep(c(2,4), each=3) 이라는 코드를 실행시키면 2,4를 각각 3번씩 반복실행 시켜서

222444 라는 결과값을 순서대로 산출해줍니다.

 


> rep("a", times = 10)
 [1] "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"

> rep("a", 10)
 [1] "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"

 

만약에 rep를 이용해 문자형을 반복하고 싶다면 "a" 처럼 ""을 무조건 같이 적어주셔야 정상적으로 출력됩니다.

그냥 rep(a,10) 이런식으로 코드를 실행시키면 당연히 문자형 코드는 인식이 불가능 하기에 출력이 안됩니다.

 

 

 

 계속 이어서 rep를 응용해서 1~10을 반복하는 숫자를 unit이라는 단위구간을 만들어

데이터를 처리하는 코드도 알려드리도록 하겠습니다.


a = c(1:10)
b = rep(1, times = 10)
c = rep(c(1), c(10))
abc = data.frame(cbind(a, b, c))

abc$unit <- rep(c(1:10), len = nrow(abc))
abc$unit
abc
> abc
    a b c    unit
1   1 1 1       1
2   2 1 1       2
3   3 1 1       3
4   4 1 1       4
5   5 1 1       5
6   6 1 1       6
7   7 1 1       7
8   8 1 1       8
9   9 1 1       9
10 10 1 1      10

이런식으로 데이터프레임과 cbind를 이용해서 abc라는 데이터를 만든후에 unit이라는 단위를 만들었습니다.

최종적으로는 unit이라는 단위구간으로 abc라는 데이터를 구간화 해줄수 있는것입니다. 

 

생성한 DATA가 일정한 성질을 가진다면 이런식으로 데이터 구간화를 진행할수 있습니다.

 

#2-2 Vector(벡터) - seq() , 등차 수열 생성 코드

seq()는 쉽게 말하면 등차 수열을 생성하는 코드라고 생각하시면 됩니다.


seq(1,10, by = 1)
> seq(1,10, by = 1)
 [1]  1  2  3  4  5  6  7  8  9 10

seq(0, 2, length=11)
> seq(0, 2, length=11)
 [1] 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0

코드를 설명드리자면 seq(1,10, by = 1)은 1~10까지 1단위로 증가시켜주는 코드라고 생각하시면 됩니다.

seq(0, 2, length=11)은 0과 2사이를 11개로 일정한 간격을 나누게 해주는 코드입니다.

 

이런식으로 seq는 등차수열생성 코드라고 생각하시면 됩니다.

 


rep(), seq() 두 함수모두 R프로그래밍에서 기초적인 부분이기에 해당 부분을

꼼꼼하게 숙지하시면 큰 도움될 것이라고 생각합니다.

 

이번 포스팅에서는 R프로그래밍 vector(벡터) - rep() , seq() 함수 이용에 대해서 알아보았는데 

해당 포스팅을 기점으로 R프로그래밍 관련 자료들을 계속해서 정리해서 올리도록 하겠습니다.

 

이번 포스팅은 여기서 마치도록 하겠습니다.

포스팅 읽어주셔서 감사합니다.

 

 

 

 

Comments