Comment combiner deux fonctions dans R?
Rafael Jeremiah Jonathans
J'ai deux fonctions et je souhaite combiner les deux en une seule fonction. Par exemple, j'ai deux fonctions différentes avec les mêmes arguments multiples comme suit:
fun1 <- function(a, b){
print(a * b)}
fun2 <- function(a, b){
print(a + b)}
Que puis-je faire en utilisant les fonctions existantes pour combiner les deux en une seule afin de pouvoir avoir une fonction comme celle-ci:
fun3 <- function(a, b){
print(a * b)
print(a + b)}
Je vous remercie
G. Grothendieck
En utilisant fun1
et à fun2
partir de la question, nous pouvons définir both
qui les exécute séquentiellement. Nous le testons également.
both <- function(...) {
fun1(...)
fun2(...)
}
# test
both(1, 2)
## [1] 2
## [1] 3
Ou si vous vouliez renvoyer leurs sorties:
both2 <- function(...) list(fun1(...), fun2(...))
Alternativement, nous pouvons définir une fonction de fabrique qui, étant donné deux fonctions ayant les mêmes arguments, crée une fonction qui les exécute en séquence.
Combine <- function(FUN1, FUN2) {
function(...) { FUN1(...); FUN2(...) }
}
# test
mewfun <- Combine(fun1, fun2)
newfun(1, 2)
## [1] 2
## [1] 3
ou si vous vouliez retourner leurs sorties
Combine2 <- function(FUN1, FUN2) {
function(...) list(FUN1(...), FUN2(...))
}