16.3 함수의 반환 값
이 절에서는 R의 함수에서 값을 반환하는 방법을 학습하겠습니다. 또한 return() 함수없이 함수를 사용하는 방법도 알아 보겠습니다. 여러 번 처리를 수행하고 결과를 반환하려면 함수가 필요합니다. 이것은 R의 return ()함수로 수행됩니다.
return() 함수의 형식은 다음과 같습니다.
return(expression)
함수에서 반환되는 값은 유효한 개체가 될 수 있습니다.
16.3.1 return() 함수를 이용한 함수 값의 반환
return() 함수의 사용 예를 들면 다음과 같습니다. 주어진 숫자가 양수인지, 음수인지 또는 0인지를 반환하는 예를 살펴 보겠습니다. 아래와 같이 check() 함수를 정의해 보겠습니다.
check <- function(x) { # 함수를 정의합니다.
if (x > 0) { # 첫번째 조건으로 인수가 양수인지 학인합니다.
result <- "Positive" # 첫번째 조건의 TRUE 블럭입니다
}
else if (x < 0) { # 두번째 조건으로 음수인지 확인합니다.
result <- "Negative" # 두번째 조건의 TRUE 블럭입니다.
}
else {
result <- "Zero" # 모든 조건의 FALSE 블럽입니다.
}
return(result) # return() 함수로 result를 반환합니다.
}이제 정의된 check() 함수를 호출해 보겠습니다.
check(1)## [1] "Positive"
check(-10)## [1] "Negative"
check(0)## [1] "Zero"
16.3.2 return() 함수가 없는 함수
함수에서 명시적인 return() 함수가 없는 경우 마지막으로 평가된 식의 값이 자동으로 반환됩니다.
예를 들어 다음은 위의 기능과 동일합니다.
check <- function(x) {
if (x > 0) {
result <- "Positive"
}
else if (x < 0) {
result <- "Negative"
}
else {
result <- "Zero"
}
result
}우리는 일반적으로 명시적인 return()함수를 사용하여 함수의 값을 반환합니다. 그러나 함수의 마지막 명령문이 return() 함수가 아니면 조건문이 호출된 곳의 결과로 함수가 조기에 종료됩니다.
check <- function(x) {
if (x>0) {
return("Positive")
}
else if (x<0) {
return("Negative")
}
else {
return("Zero")
}
}위의 예에서x > 0 인 경우 함수는 나머지 부분을 평가하지 않고 즉시"Positive"라는 문자열을 반환합니다.
16.3.3 다중값 반환
return() 함수는 단일 객체 만 반환할 수 있습니다. 다중 값을 반환하려면 복수 개의 요소로 구성되는 벡터나 리스트 등 (또는 다른 개체)을 사용하여 반환할 수 있습니다.
다음은 그 예입니다.
# 다중 값을 반환하는 함수를 정의합니다.
multi_return <- function() {
my_list <- list("color" = "red", "size" = 20, "shape" = "round")
return(my_list) # my_list 개체를 반환합니다.
}여기에서 여러 요소로 구성되어 있는 리스트 구조의 my_list를 생성하고 이 리스트를 반환합니다.
a <- multi_return()
a$color## [1] "red"
a$size## [1] 20
a$shape## [1] "round"
앞에서 살펴 본 간단한 계산기 프로그램을 참고하기 바랍니다.