2016-04-12 2 views
0

При чтении главы оператора функции в Advanced R Х. Уикхэмом я столкнулся с функцией compose. оператор Infix, "О" используется для создания композиции функций:Анонимная функция в функциональной композиции

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

Теперь вопрос, почему следующая функция работает

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

mul(1:10)

10

Но это не

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 

Это то, что вы хотите?

Смежные вопросы