본문 바로가기
R

R 기초 - 2

by winston1214 2020. 7. 10.
반응형

그 전 글에서 R studio에 대해 알아보았다. 지금부터는 script 창에서 코드를 작성하고 실행하는 방법에 대해 설명하겠다.

R을 실행하기 전 기본적으로 작업 환경을 설정해줘야한다. 편의를 위해 R 작업 폴더를 만드는 것을 추천한다.

R 작업폴더를 만든 후  R studio를 실행한다.

그리고 현재의 디렉토리를 확인한다.

getwd()

이 함수를 통해 현재의 디렉토리를 확인한다. 

만약 현재 디렉토리에 작업환경을 설정하고 싶다면 setwd(getwd())를 실행시키면 된다.

하지만 다른 폴더에 작업환경 설정을 하려면 setwd() 함수를 실행시킨다. 바로 실행시키지 말고 전에 생성했던 R 작업 폴더의 주소를 복사한 후 setwd()에 붙여 넣는다.

 setwd('c:/r')

나는 c드라이브안에 r이라는 폴더를 생성하여 작업환경을 설정하였다. 

이 과정에서 가장 많이 나는 오류가 있는데 이를 해결하기 위해선 역슬래쉬를 두번 쓰면 해결이 된다.

 

이제부터 가장 간단한 함수의 실습을 통해 R에 대해 이해를 해보겠다.

티스토리에 코드 블럭이 R이 없어서 python 코드 블럭을 이용하겠다.

벡터형에 대해 알아보겠다. 

가장 기본적으로 python의 range 같은 것을 R로 변환해보겠다.

# python
range(1,11) # 1,2,3,4,5,6,7,8,9,10

# R
1:10 # 1,2,3,4,5,6,7,8,9,10

이 때 주의할 점은 range(1,11)은 1이상 11미만으로 하지만 R은 1이상 10이하 임을 기억하면 된다. 그리고 간단하게 콜론을 붙이면 나오는 것을 알 수 있다.  이 때 1:10은 벡터 연산자라는 것을 기억해야한다.

벡터 설정을 하기 위해선 앞에 c를 붙이면 된다.

벡터란 단일값의 모음으로 동일한 데이터형을 가지는 값들이 들어간다.

x <- c(1, 2, 3) 	# 1~3을 x에 저장
x 		         # x 출력
# [1] 1 2 3
y <- c() 		     # y를 빈 벡터로 생성
y <- c(y, c(1:3))	# y 에 c(1:3) 추가
y 		         # y 출력
# [1] 1 2 3

 c() 함수를 이용하여 주어진 인수로 벡터를 생성한다.

다음으로 seq 함수에 대해 알아보겠다. seq 함수는 sequence의 약자로 연속적으로 나타나게 해주는 함수이다.

seq(from=1, to=10, by=2) 	# 1~10, 2씩 증가
# [1] 1 3 5 7 9
seq(1, 10, by = 2) 		# 1~10, 2씩 증가 
# [1] 1 3 5 7 9
seq(0, 1, by = 0.1) 		  # 0~1, 0.1씩 증가
# [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
seq(0, 1, length.out = 11)# 0~1, 11개인 벡터
# [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

from= 1 부터 to =10 까지 by=2 씩의 등차수열을 생성하는 것이다.  이는 seq(t=10,f=1,b=2)와 같은 결과이다. 즉 from 을 f 로 to를 t로 by를 b로 변환하여 순서와 상관없이 넣어줘도 같은 값을 나타낸다는 것이다.

그리고 이를 생략하면 순서를 지켜줘야한다. 그리고 by가 아닌 length는 등차값이 아니라 몇개라고 생각하면 편하다.

# 만약 seq(by=0.1 ,0 ,1) 이면 이는 by값이 주어졌고 from 과 to 값은 주어지지 않은 상황이다. 이 때는 seq함수의 구성요소가 seq(from,to,by)로 우선순위이므로 by 는 제외하고 from이 우선적으로 나오고( 따라서 from = 0 ) to 는 from 보다 우선순위가 낮으므로 두번째로 나오게 된다.(따라서 to=1)

즉 seq(0,1,lenght.out = 11)은 0이상 1이하의 수를 11개 추출하는데 같은 간격으로 추출하라 라는 것이다.

파이썬으로 따지면 pd.cut()함수와 동일한 것이다.

다음으로 반복을 하는 함수에 대해 알아보겠다. 반복을 위해선 rep() 함수를 사용하면 된다.

rep(c(1:3), times = 2)# (1, 2, 3) 2번 반복
# [1] 1 2 3 1 2 3
rep(c(1:3), each = 2)	# (1, 2, 3) 개별 2번 반복
# [1] 1 1 2 2 3 3

times는 1부터 3까지의 벡터 자체를 두 번 반복하는 것이고 each는 각각의 인자값을 2번씩 반복한다는 것이다.

 

※ 벡터 type에 관해 좀 더 부가설명을 하자면 한 벡터내에서는 동일한 타입을 가져야 한다.

예를 하나 들어보겠다.

a<-c(1,2,3,'a','b','c')
# [1] "1" "2" "3" "a" "b" "c"

백터 내에 데이터 타입이 다르면 하나의 타입으로 통일해준다. 문자형이 숫자형보다 우선순위가 높아서 문자형 타입으로 변환되는 것이다. 

 

※ 함수가 어떤 함수인지 모르겠으면 script 창에 함수 앞에 ?를 붙이면 된다. ex) ?seq

다른 방법으로는 help함수를 이용하면 된다 ex) help(rep)

반응형

'R' 카테고리의 다른 글

R 기초 - 6  (0) 2020.07.10
R 기초 - 5  (0) 2020.07.10
R 기초 - 4  (0) 2020.07.10
R 기초 - 3  (0) 2020.07.10
R 기초  (0) 2020.07.10

댓글