43 votes

Comment appeler une fonction en utilisant la chaîne de caractères du nom de la fonction dans R ?

J'essaie d'appeler une fonction avec une chaîne donnée du nom de la fonction.

Par exemple

 print(funcList)
[[1]]
`*`

[[2]]
sin

travaux:

 mult <- `*`
mult(5,6)
[1] 30

ne fonctionne pas :

 func1 <- funcList[[1]]
func1(5,6)

func2 <- funcList[[2]]
func2(1.2)

Alors, est-il possible d'appeler toutes les fonctions de la functionList ?

32voto

aL3xa Points 10236

Voir la documentation pour do.call .

Une démonstration rapide :

 do.call("rnorm", list(100, 0, 1))

Le premier paramètre peut être un littéral de chaîne ou un objet R, et le second est une liste d'arguments qui doivent être mis en correspondance avec les arguments formels de fonction fournis.

4voto

mccandar Points 135

vous pouvez également utiliser match.fun

 > functionlist <- list("*","sin")
> f <- match.fun(functionlist[[1]])
> f(5,6)
[1] 30

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X