R의 기초 함수에 대해 알아보겠다.
어느 프로그램이든 if 문이나 반복문이 존재하기 마련이다. R도 그렇다. python이랑 약간 비슷하다.
먼저 if 문을 한 번 구현해보자
#if문 사용 (if, else if, else)
x <- 5
if(x %% 2 ==0) {
print('x는 짝수') # 조건식이 참일 때 수행
} else {
print('x는 홀수') # 조건식이 거짓일 때 수행
}
# x는 홀수
--설명 생략--
그리고 R에는 엑셀과 같은 if 문이 있다.
options(digits = 3) # 숫자 표현 시 유효자릿수를 3자리로 설정
#ifelse(조건식, 참값,거짓값)
sqrt(ifelse(x>=0, x, NA)) # NaN이 발생하지 않게 음수면 NA로 표시
# [1] NA NA NA NA NA 0.00 1.00 1.41 1.73 2.00 2.24
처음 options 값은 숫자가 얼마만큼 출력할지를 나타내는 것이다. 즉, 유효자릿수가 3자리이면 소수점 둘째자리까지 나타내겠다는 것이다. 만약 options을 주지 않으면 digits의 default값은 7이다. 그리고 메인인 ifelse 문은 (조건,T일 때 return 값,F일 때 return 값) 으로 구성되어있다. 따라서 조건에 맞으면 두번째 값이 나오고 맞지 않으면 3번째 값이 나오는 것이다.
다음으로 반복문에 대해 설명하겠다.
반복문에는 여러 종류가 있는데 첫번째로 repeat 문이 있다.
# repeat 문을 이용해 1부터 10까지 숫자 증가
i <- 1 # i의 시작값은 1
repeat {
if(i>10) { # i가 10을 넘으면 반복을 중단(break)함
break
} else {
print(i)
i = i+1 # i를 1 증가시킴.
}
}
두번째로 while문이다.
i <- 1 # i의 시작값은 1임.
while(i <= 10){ # i가 10 이하인 동안에 반복함
print(i)
i = i+1 # i를 1 증가시킴.
}
세번째로 for문이다.
# for 문을 이용한 1부터 10까지 숫자 증가시키기
for(i in 1:10) {
print(i)
}
설명을 굳이 해야되나 할 정도의 직관적으로 표현된 코드이다.
초등학생들이 코딩을 배울 때 처음 구현하는 구구단 코드를 한 번 구현해보겠다.
# for 문을 이용해 구구단 2~9단 만들기
for(i in 2:9) {
for(j in 1:9) {
print(paste(i, "X", j, "=", i*j))
}
}
이 때 처음 보는 함수가 나온다. 바로 paste 함수이다. 이는 값들을 결합해 주는 것이다. 즉 "2X1=2" 라고 표현해주는 함수이다. paste의 장점은 타입이 달라도 결합된다는 것이다.
다음으로 사용자 정의 함수를 만드는 방법이다. python 에선 def 를 이용하지만 R에서는 function() 을 이용한다.
인자값을 받고 팩토리얼 값을 반환해주는 사용자 정의 함수를 만들어보겠다.
fact <- function(x) { # 함수의 이름은 fact, 입력은 x
fa = 1 # 계승값을 저장할 변수
while(x>1) { # x가 1보다 큰 동안 반복
fa = fa*x # x 값을 fa에 곱한 후 fa에 다시 저장
x = x-1 # x 값을 1 감소
}
return(fa) # 최종 계산된 fa 반환
}
fact(5) # 5!을 계산한 결과 출력
처음 fact는 함수의 이름을 정의해준다. 그리고 반복문을 통해 입력받은 인자값에서 하나씩 빼고 곱해준다. 그리고 최종 계산된 값을 반환한다. 당연히 출력은 120이 나온다.
길고 길었던 R 기초가 끝났다. 다음부턴 sample 데이터를 통해서 실습을 해보겠다.
댓글