306 votes

Expression R éval

Je suis curieux de savoir si R peut utiliser sa fonction "eval" pour effectuer des calculs fournis par exemple par une chaîne.

C'est un cas commun

 > eval("5+5")
 

Cependant, au lieu de 10 je reçois

 [1] "5+5"
 

Toute solution? :-)

454voto

Harlan Points 5486

eval () évalue une expression, mais "5 +5" est une chaîne, pas une expression. Donc, utilisez parse () avec text = pour traduire la chaîne en une expression:

 > eval(parse(text="5+5"))
[1] 10
> class("5+5")
[1] "character"
> class(parse(text="5+5"))
[1] "expression"
 

104voto

Shane Points 40885

Vous pouvez utiliser la fonction parse() pour convertir les caractères en une expression. Vous devez spécifier que l'entrée est du texte, car l'analyse attend un fichier par défaut:

 eval(parse(text="5+5"))
 

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