[R] 함수 만들기 기초

2018. 6. 3. 21:02
함수 만들기

R에서 함수는 어떻게 만들 수 있을까? 아래와 같이 만들 수 있다.

  • function_name = function(arg_1, arg_2, …) {expression}

보통 {} 안은 들여쓰기를 한다. 하지만 expression이 한 줄이라면 굳이 들여쓰기를 하지 않고 또 중괄호를 쓰지 않아도 코드는 잘 실행된다. 그래도 가독성을 위해서라면 중괄호와 들여쓰기를 사용하는 것이 좋겠다.

다른 프로그래밍 언어처럼 return()을 사용해 반환값을 지정할 수 있다. 한데 여기서 유의할 것이 있다.

  1. return()이 없으면 함수의 가장 마지막 줄을 반환한다.
  2. return() 뒤의 내용은 실행되지 않는다.
quadratic <- function(x)
{
  print("이차 함수 y=x^2")
  y <- x^2
  return(y)
  print("y를 반환합니다")
}

quadratic(10) #맨 마지막 줄이 실행되지 않는 것을 알 수 있다.
## [1] "이차 함수 y=x^2"
## [1] 100

매클로린 급수를 사용해 자연상수를 근사하는 함수를 짜 볼 수 있다. 무한히 더할 수는 없으니까 적당히 200번 째 항 정도에서 끊어보자. (여기서는 반복분 for 문을 사용했다. 하지만 if문을 사용해서 코드를 짤 수도 있겠다.)

\[ \sum_{n=0}^{\infty}\frac{1}{n!} = e \]

emake <- function(){
  e <- 0
  for (n in 0:200){
    e <- e + 1/(factorial(n))
  }
  return(e)
}

함수에는 인자를 지정할 수 있다. 위의 자연상수를 근사하는 함수를 활용해, 입력 받은 숫자 k 항까지 자연상수를 근사하는 함수를 만들어 보자.

emake2 <- function(x)
{
  e <- 0
  for (x in 0:x)
  {
    e <- e + 1/factorial(x)
  }
  return(e)
}

e <- emake2(10) # 10차 항까지 자연상수를 근사