2014-05-07 3 views
5

Je suis nouveau à R et j'essaie de comprendre, comment écrire quelque chose comme "Hey les gars, ceci est mon intrigue pour (0) 8 < = (moins de ou égal) x < = 10 "dans mon intrigue-titre.Comment utiliser plus d'une expression à la suite

J'ai essayé quelque chose comme ceci:

plot(1:10, main="Hey, guys, this is my plot for \n") 
mtext(c(expression(8 <= x),expression(x <= 10), side=3) 

Cela donne pas exactement ce que je veux, mais « 8 (inférieur ou égal) xx (inférieur ou égal) 10 », et ces deux expressions sont imprimés en ligne sous le titre principal, (ce qui est assez cool), mais au même endroit, ce qui est à peu près inutile :)

J'ai aussi essayé:

plot(1:10, main=bquote(paste(8 <= x, x <= 10, sep=","))) 

Quel genre de fait ce que je veux (à l'exception du Seper ator semble être complètement ignoré), mais je ne peux pas ajouter d'autres textes. Sortie: "8 (moins ou égal) xx (moins ou égal) 10".

Et quand j'ai essayé

plot(1:10, main=paste("x",bquote(paste(x <= 8,z <= 10,sep=" ")),sep=" ")) 

la sortie m'a irrité complètement: le titre était: "xpaste (\ n) xx < = 8 (\ n) XZ < = 10 (\ n) x" (le (\ n) est un saut de ligne, les autres caractères sont exactement ce qui est imprimé)

Alors, est-il possible d'imprimer des expressions avec plus d'un opérateur?

Répondre

3

expressions sont un peu loufoque, mais voici comment vous pouvez le faire

plot(1:10, main="Hey, guys, this is my plot for \n") 
mtext(expression(paste(8 <= x,", ",x <= 10)), side=3) 

Pour obtenir un vecteur d'expressions, vous utilisez juste expression(exp1,exp2,exp3). Pas besoin de s'embêter avec c() ou list(). Et puis pour mélanger des expressions avec du texte, paste() est souvent utile. Sans paste pour les combiner comme une expression, ils vont tracer les uns sur les autres au même endroit.

+0

En plus de la réponse de MrFlick, si seulement un x était voulu, comment j'ai pris la question: 'plot (1:10, main =" Hey, les gars, ceci est mon intrigue pour \ n ") mtext (expression (paste (8 <= x, "" <= 10)), côté = 3) ' – Csislander

4
heyTitle <- bquote(atop(
    "Hey, guys, this is my plot for", 
    {8 <=x}*phantom()<=10 
    )) 

plot(1:10, main=heyTitle) 

Merci à this answer pour le tour atop().

EDIT: Voici la figure

EDIT 2: emprunt de another answer by G. Grothendieck à utiliser des crochets pour fixer l'espacement.

enter image description here

+0

+1 pour' atop'. –

+0

+1 pour m'avoir présenté au sommet –

+0

Je vous remercie tous les deux. Maintenant, je dois juste décider quelle solution je vais utiliser. – Nzuri

4

Essayez ceci:

plot(1:10, main = ~ bold(atop("Hey, guys, this is my plot for", {"8" <= x} <= "10"))) 

Sur l'appareil windows() il ressemble à ceci: screenshot

RÉVISÉ espacement et fait 2ème ligne un peu plus grande pour correspondre à la première ligne. Ajouté l'idée atop de rbatt. Plus de simplification.

+0

Belle utilisation de {} pour faire face à l'espacement. Je vais utiliser votre technique pour mettre à jour ma réponse - j'espère que cela ne vous dérange pas (j'ai déjà utilisé '8 <= ~ x ~ phantom() <= 10', j'utilise maintenant' {8 <= x} * fantôme() <= 10' – rbatt

+1

OK, je vous échangerai un {} pour un 'atop'. –

Questions connexes