首页 > 解决方案 > 如何在R中组合两个函数?

问题描述

我有两个功能,我想将两者组合成一个功能。例如,我有两个具有相同多个参数的不同函数,如下所示:

fun1 <- function(a, b){
            print(a * b)}

fun2 <- function(a, b){
            print(a + b)}

我可以通过使用现有功能将两者合并为一个来做什么,这样我就可以拥有这样的功能:

fun3 <- function(a, b){
            print(a * b)
            print(a + b)}

谢谢

标签: r

解决方案


使用fun1fun2从问题中我们可以定义both哪个顺序运行它们。我们也对其进行测试。

both <- function(...) {
  fun1(...)
  fun2(...)
}

# test
both(1, 2)
## [1] 2
## [1] 3

或者,如果您想返回他们的输出:

both2 <- function(...) list(fun1(...), fun2(...))

或者,我们可以定义一个工厂函数,给定两个具有相同参数的函数,创建一个按顺序运行它们的函数。

Combine <- function(FUN1, FUN2) {
  function(...) { FUN1(...); FUN2(...) }
}

# test 
mewfun <- Combine(fun1, fun2)
newfun(1, 2)
## [1] 2
## [1] 3

或者如果你想返回他们的输出

Combine2 <- function(FUN1, FUN2) {
  function(...) list(FUN1(...), FUN2(...))
}

推荐阅读