我倾向于使用*apply
函数,并且在使用组合函数时发现它很麻烦。我看过pipeR
和magrittr
。
说我想做(我知道这没有意义)
lapply(-3:10, FUN=function(x){return(sum(abs(x)))})
我可以定义FUN=function(x){return(sum(abs(x)))}
的最短方式是什么,现在似乎{. %>% abs %>% sum}
是我找到的最短的。
有没有办法{ sum(abs(.)) }
或类似的东西?
答案 0 :(得分:4)
这是某种代码高尔夫挑战吗?
library(functional)
lapply(-3:10, Compose(abs, sum))
当然,定义一个运算符很简单:
`%.%` <- function(x, y) Compose(y, x)
lapply(-3:10, sum %.% abs)
事实上,Hadley的pryr包定义了这个运算符。
答案 1 :(得分:2)
使用模块klmr/functional/lambda,您可以编写
lapply(-3 : 10, x -> sum(abs(x))
或者,你可以写
lapply(-3 : 10, sum %.% abs)
后者使用函数组合运算符,该运算符又在上面链接的模块klmr / functional中定义。