>>401
おもしろいかどうかわかりませんが、
data <- as.integer(runif(10,1,21))
のようなデータがある時に、
predicate <- function(x) { x < 5 }
が真になるような項目を数え上げたいとします。

for文を使うと

ret <- 0
for(i in 1:length(data)){ if (predicate(data[i])) { ret <- ret + 1 } }

のような形になりますが、高階関数を使うと、

length(Filter(predicate, data))

と書けるようになります。
これは関数プログラミングの技法で、もう少し詳しく学びたいようでしたら
programming in haskellなんかが薄くていい本なんじゃないかと思います。