2016-04-12 29 views
0

H.ウィッカムによってAdvanced Rにファンクション演算子の章を読みながら、私はcompose機能に出くわしました。中置演算子、 "O" は関数合成を作成するために使用されます。匿名関数は

library(pryr) 
"%o%" <- compose 

今の質問は、なぜには、以下の機能が働くんさ

mul <- sum %o% median %o% mean %o% length %o% function(x) x^2

mul(1:10)

10

しかし、これはしません

0123唯一の違いは、匿名関数の位置である

mul <- sum %o% median %o% mean %o% function(x) x^2 %o% length

mul(1:10)

Error in FUN(X[[i]], ...) : 'list(...)[[1L]]' is not a function, character or symbol

答えて

0

匿名関数を中括弧に入れる必要があります。それ以外の場合は、lengthが関数の一部として構成されており、正当にはエラーが返されます。試してみることができます:

mul2 <- sum %o% median %o% mean %o% {function(x) x^2} %o% length 
> mul2(1:10) 
[1] 100 

これは何ですか?