5 votes

Utilisation simultanée d'indices et de valeurs variables dans les titres d'axes dans R

Je veux utiliser le titre "émissions de CO2 dans les zones humides" dans un graphique en R, alors que le 2 dans CO2 est en indice, et que la valeur pour la région (ici : "zones humides") est contenue dans une variable nommée "région".

region = "wetlands"
plot (1, 1, main=expression(CO[2]~paste(" emissions in ", region)))

Le problème est que ce n'est pas la valeur de la variable qui est collée, mais son nom. Cela donne "émissions de CO2 dans la région" au lieu de "émissions de CO2 dans les zones humides". J'ai également essayé :

region="wetlands"
plot (1,1,main=paste(expression(CO[2]), "emissions in", region))

Mais l'indice n'est pas fait ici, et le titre est : "Émissions de CO[2] dans les zones humides".

Est-il possible, d'une manière ou d'une autre, d'obtenir les valeurs des variables dans une expression ?

Merci pour votre aide,

Sven

13voto

Gavin Simpson Points 72349

Il n'est pas nécessaire d'utiliser paste() dans la production d'une expression pour l'annotation de type plothmath. Cela fonctionne très bien :

region <- "foo"
plot (1, 1, main = bquote(CO[2] ~ "emissions in" ~ .(region)))

donner :

enter image description here

L'utilisation paste() se met en travers de la route.

Nb : Vous devez citer "in" parce que l'analyseur le considère comme un élément clé de la syntaxe de R dans le cas contraire.

7voto

Ari B. Friedman Points 24940

Vous pouvez utiliser un substitut :

mn <- substitute(CO[2]~ "emissions in" ~ region, list(region="wetlands") )
plot(1, 1, main=mn )

substitute plot

A partir de la ?substitute fichier d'aide :

L'utilisation typique du substitut est de créer pour les ensembles de données et les graphiques. L'exemple myplot ci-dessous montre une utilisation simple de cette fonction. cette fonction. Il utilise les fonctions deparse et substitute pour créer des étiquettes pour un tracé qui sont des chaînes de caractères v. des étiquettes pour un graphique qui sont des versions de chaînes de caractères des arguments réels de la fonction myplot.

2voto

Roman Luštrik Points 19295

Dans votre cas, il s'agit d'une réponse volée à l'une des réponses du lien dupliqué :

x <- "OberKrain"
plot(1:10, 1:10, main = bquote(paste(CO[2], " in ", .(x))))

enter image description here

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