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