Я могу создать оператор компоновки в R:
`%c%` = function(x,y)function(...)x(y(...))
Используется следующим образом:
> numericNull = is.null %c% numeric
> numericNull(myVec)
[2] TRUE FALSE
но я хотел бы знать, есть ли официальный набор функций для выполнения такого рода вещей и других операций, таких как currying в R. В большинстве случаев это уменьшает количество скобок, ключевых слов функции и т.д. в моем коде.
Моя функция curry:
> curry=function(...){
z1=z0=substitute(...);z1[1]=call("list");
function(...){do.call(as.character(z0[[1]]),
as.list(c(eval(z1),list(...))))}}
> p = curry(paste(collapse=""))
> p(letters[1:10])
[1] "abcdefghij"
Это особенно хорошо для, например, агрегат:
> df = data.frame(l=sample(1:3,10,rep=TRUE), t=letters[1:10])
> aggregate(df$t,df["l"],curry(paste(collapse="")) %c% toupper)
l x
1 1 ADG
2 2 BCH
3 3 EFIJ
Что я нахожу намного более изящным и редактируемым, чем:
> aggregate(df$t, df["l"], function(x)paste(collapse="",toupper(x)))
l x
1 1 ADG
2 2 BCH
3 3 EFIJ
В принципе, я хочу знать - это уже сделано для R?