SW/R

R : 사용자 정의 함수 (개념 및 예제)

얇은생각 2019. 2. 18. 12:30
반응형

사용자 정의 함수

우리는 종종 반복적으로 하는 작업이 있습니다. 그런 작업은 함수로 정의해 놓습니다. 그리고 그 함수를 불러서 사용하는 것이 훨씬 편합니다. R에서 다양한 함수를 패키지 형태로 제공합니다. 하지만 이외에도 사용자가 직접 함수를 정의해 사용할 수 있습니다.



사용자 정의 함수 예제


mymax <- function(x,y) {
num.max <- x
if (y > x) {
num.max <- y
}
return(num.max)
}
mymax(10,15)
# 15
mymax(20,15)
# 20


함수는 우선 함수의 이름이 있어야 합니다. 그리고 함수에 해당하는 매개변수가 있어야합니다. 그다음 함수의 연산에 따를 함수의 실행 결과 값이 있어야 합니다. 위 예제를 통해 확인해 보세요.



Default value 함수


mydiv <- function(x,y=2) {
result <- x/y
return(result)
}
mydiv(x=10,y=3)
# 3.333333
mydiv(10,3)
# 3.333333
mydiv(10)
# 5


예제를 보면 y의 default 값을 2로 설정하였습니다. 예제를 실행해보면 y 파라미터가 없어도 2라는 기본값이 적용되어 계산되는 것을 확인할 수 있습니다.



Return 해야 할 값이 여러 개 일때


myfunc <- function(x,y) {
val.sum <- x+y
val.mul <- x*y
return(list(sum=val.sum, mul=val.mul))
}
result <- myfunc(5,8)
result$sum
# 13
result$mul
# 40


리턴값이 여러가지인 경우 자료형을 활용하면 됩니다. 위 예제에서는 list 형식으로 반환하여 하나의 함수에서 다양한 값을 받아오는 것을 확인할 수 있습니다.



저장된 파일의 함수 사용하기


myfunc.R

mydiv <- function(x,y=2) {
result <- x/y
return(result)
}


setwd("c:/Rworks") # myfunc.R 이 저장된 폴더
source("myfunc.R") # myfunc.R 의 명령어 실행

# 함수 사용
a <- mydiv(20,4)
b <- mydiv(30,4)
a+b
# 12.5
mydiv(mydiv(20,2),5)
# 2


다른 파일에 저장된 함수를 로드해서 활용할 수 있습니다. 따라서 복잡한 함수를 만들어 놓고 다른 파일에 저장해서 사용합니다. 그러면 훨씬 깔끔하게 데이터 분석을 할 수 있겠죠?

반응형