중첩 함수
함수 안에 또 다른 함수를 정의하여 사용할 수 있다. 이를 중첩 함수Nested Function라고 부른다. 다음 코드는 함수 f( ) 안에 함수 g( )를 정의하고, 함수 f( ) 안에서 이를 호출하여 사용하는 예를 보여준다.
> f <- function(x, y) { + print(x) + g <- function(y) { + print(y) + } + g(y) + } > f(1, 2) [1] 1 [1] 2
중첩 함수를 사용하면 함수 안에서 반복되는 동작을 한 함수로 만들고 이를 호출하여 코드를 간결하게 표현할 수 있다는 장점이 있다. 또한, 내부 함수가 외부 함수에 정의된 변수를 접근할 수 있어 클로저closure로 사용할 수 있다.
> f <- function(x1) { + return(function(x2) { + return(x1 + x2) + }) + } > g <- f(1) > g(2) # x1 = 1, x2 = 2 [1] 3 > g2 <- f(2) > g2(2) # x1 = 2, x2 = 2 [1] 4
위 코드에서 함수 g( )에는 x1=1, 함수 g2( )에는 x1=2가 지정되었다. 따라서 g(x2)는 1 + x2를, g2(x2)는 2 + x2를 계산한다.