앞 함수는 x의 타입이 달라질 때마다 동작을 달리한다. x가 원자 벡터(예를 들어 수치형 벡터)이면 함수는 첫 번째 요소를 추출한다. x가 data와 index로 구성된 리스트 형태라면 함수는 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
입력이 실제로는 리스트이지만, 예상되는 요소인 data와 index를 포함하지 않으면 어떻게 될까? index 요소가 없고, data 대신 input이 있는 리스트로 실험해 보자.
> take_it(list(input = c("a", "b", "c")))
NULL