본문 바로가기
Python

R 기초 - 8

by winston1214 2020. 7. 10.
반응형

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 데이터를 통해서 실습을 해보겠다.

반응형

댓글