더북(TheBook)

앞 함수는 x의 타입이 달라질 때마다 동작을 달리한다. x가 원자 벡터(예를 들어 수치형 벡터)이면 함수는 첫 번째 요소를 추출한다. xdataindex로 구성된 리스트 형태라면 함수는 x$data에서 index에 해당하는 요소를 추출한다.

> take_it(c(1, 2, 3))
[1] 1
> take_it(list(data = c("a", "b", "c"), index = 3))
[1] "c"

지원하지 않는 타입의 입력이라면 함수는 결괏값을 반환하는 대신 오류 메시지를 발생시키는 동시에 중지된다. 예를 들어 take_it 함수는 함수를 입력으로 받을 수 없다. 모든 함수는 다른 객체들과 마찬가지로 관련 함수를 인수로 전달할 수 있다. 그러나 이 경우에 mean 함수를 인수로 전달하면 그것은 else 조건으로 넘어가서 멈출 것이다.

> take_it(mean)
Error in take_it(mean) : Not supported input type

입력이 실제로는 리스트이지만, 예상되는 요소인 dataindex를 포함하지 않으면 어떻게 될까? index 요소가 없고, data 대신 input이 있는 리스트로 실험해 보자.

> take_it(list(input = c("a", "b", "c")))
NULL
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.