함수의 조작

함수의 조작 (Manipulation of functions)

함수나 클로저의 구성 요소를 조작해야 할 일이 꽤 자주 생겨요. R은 이런 작업을 위한 인터페이스 함수들을 제공하고 있답니다.

출처: 문서

본문

6.6 함수의 조작

함수(function)나 클로저(closure)의 구성 요소를 조작할 수 있다면 정말 유용할 때가 많아요. R은 이런 목적을 위해 일련의 인터페이스 함수들을 제공합니다.

  • body: 함수의 본문(body)에 해당하는 표현식을 반환해요.
  • formals: 함수의 형식 인자(formal arguments) 목록을 반환해요. 이 목록은 pairlist 형태예요.
  • environment: 함수와 연결된 환경(environment)을 반환해요.
  • body<-: 함수의 본문을 지정된 표현식으로 설정해요.
  • formals<-: 함수의 형식 인자를 지정된 목록으로 설정해요.
  • environment<-: 함수의 환경을 지정된 환경으로 설정해요.

함수 환경 안에 있는 여러 변수의 바인딩도 바꿀 수 있어요. evalq(x <- 5, environment(f)) 같은 코드를 사용하면 되죠.

또한 as.list를 사용하면 함수를 리스트로 변환할 수도 있어요. 그 결과는 형식 인자 목록과 함수 본문을 이어 붙인 형태가 돼요. 반대로 그런 리스트는 as.function을 통해 다시 함수로 변환할 수 있구요. 이 기능은 주로 S 언어와의 호환성을 위해 포함된 것이에요. as.list를 쓰면 환경 정보가 유실된다는 점을 기억해 두세요. 반면 as.function은 환경을 설정할 수 있는 인자를 갖고 있답니다.

더 알아보기 (Learn more)

출처: R Language Definition - 함수의 조작