Show the code
f <- function(x, fun) {
fun(x)
}
f(1:10, sum)
#> [1] 55
f(1:10, quantile)
#> 0% 25% 50% 75% 100%
#> 1.00 3.25 5.50 7.75 10.00
函数式编程(Functional Programming):将计算视为数学函数的求值,强调使用纯函数、不可变数据和高阶函数。典型代表语言:Haskell、Clojure、Scala。
f <- function(x, fun) {
fun(x)
}
f(1:10, sum)
#> [1] 55
f(1:10, quantile)
#> 0% 25% 50% 75% 100%
#> 1.00 3.25 5.50 7.75 10.00
在我们创建的函数 f()
中,我们可以理解为对传入函数的 mean()
、sum()
等函数重命名成 fun()
并进行调用。
f2 <- function(type) {
switch(type,
mean = mean,
sum = sum,
quantile = quantile)
}
mean
#> function (x, ...)
#> UseMethod("mean")
#> <bytecode: 0x0000018042390298>
#> <environment: namespace:base>
f2("mean")
#> function (x, ...)
#> UseMethod("mean")
#> <bytecode: 0x0000018042390298>
#> <environment: namespace:base>
f2("mean")(1:10)
#> [1] 5.5