앞 코드가 간단해 보이지만, lapply() 함수를 사용한 다음 코드와 비교했을 때는 상대적으로 매우 장황하다.
> lapply(len, rnorm)
[[1]]
[1] -2.0125198 0.5049327 0.8281116
[[2]]
[1] 0.3358507 -1.0591244 1.5677167 -0.3701466
[[3]]
[1] 1.77903836 0.55140201 1.19031065 0.33060223 -0.06465223
lapply() 함수를 활용한 코드가 훨씬 간단하다. len 벡터의 각 요소에 대해 rnorm() 함수를 적용하고, 각 결과를 리스트로 반환한다.
앞 예제가 가능하려면 R에서 함수를 일반적인 객체와 마찬가지로 인수로 전달할 수 있어야 한다는 사실을 깨달아야 한다. 물론 이것은 사실이다. R의 함수는 객체와 마찬가지로 취급되며, 5.4절에서 설명한 것처럼 인수로 전달될 수 있다. 이러한 특징은 코딩의 유연성을 크게 향상시킨다.
각 apply 계열 함수는 함수를 인수로 받는 소위 고차 함수다. 이 개념은 나중에 자세히 설명한다.