R中是否有类似函数组合的内容?
我认为在haskell中它有点像“(。)”,在agda中它是环形运算符。
另外,我在R中找到有关高级函数式编程的信息。 我发现函数“Reduce”,“Map”,“Filter”......还有更多吗?有什么指针吗?
答案 0 :(得分:17)
functional
包具有Compose
功能,可以推广到任意数量的功能:
set.seed(123)
x <- matrix(runif(100), 10, 10)
mean(rowSums(scale(x)))
# [1] 5.486063e-18
library(functional)
Compose(scale, rowSums, mean)(x)
# [1] 5.486063e-18
(请注意,这些功能是从左到右应用的。)
答案 1 :(得分:8)
你可以像这样制作合成功能:
composite<-function(f,g) function(...) f(g(...))
f<-function(x) x+1;
g<-function(x) x*2;
composite(f,g)(7)
composite(g,f)(7)
或制作此操作员。
关于第二点,有很多这样的;我认为最常用的是* apply系列(sapply,mapply,tapply,lapply,apply ...)。
答案 2 :(得分:1)
purrr 库中现在有一个 compose 函数。默认情况下,合成是从右到左进行的,就像在Haskell中一样,但是可以使用.dir参数将其反转:
div