2014-05-07 13 views
5

Ich bin neu in R und ich versuche herauszufinden, wie man etwas wie "Hey Leute, das ist meine Handlung für (\ n) 8 < = (weniger als oder gleich) x < = 10 "in meinem Plot-Titel.Wie man mehr als einen Ausdruck in einer Reihe verwendet

Ich habe versucht, so etwas wie dieses:

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

Dies gibt nicht genau das, was ich will, aber „8 (kleiner oder gleich) xx (kleiner oder gleich) 10“, und diese beiden Ausdrücke werden in einer Zeile gedruckt unter dem Haupttitel, aber an der gleichen Stelle (was ziemlich cool ist), was ziemlich nutzlos ist :)

ich auch versucht:

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

welche tut, was ich will (mit Ausnahme des seper ator scheint völlig ignoriert zu werden), aber ich kann keinen weiteren Text hinzufügen. Ausgabe: "8 (kleiner oder gleich) xx (kleiner oder gleich) 10".

Und als ich versuchte,

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

der Ausgang irritierte mich völlig: Der Titel lautete: "xpaste (\ n) xx < = 8 (\ n) xz < = 10 (\ n) x" (die (\ n) ist ein Zeilenumbruch, die anderen Zeichen sind genau das, was gedruckt wird)

Gibt es also eine Möglichkeit, Ausdrücke mit mehr als einem Operator zu drucken?

Antwort

3

Ausdrücke sind ein bisschen doof, aber hier ist, wie Sie tun können, dass

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

einen Vektor von Ausdrücken zu erhalten, die Sie verwenden expression(exp1,exp2,exp3) einfach. Keine Notwendigkeit, mit c() oder list() zu stören. Und dann, um Ausdrücke mit Text zu mischen, paste() kommt häufig nützlich. Ohne paste, um sie als einen Ausdruck zu kombinieren, werden sie am selben Ort übereinander geplottet.

+0

Als Ergänzung zu MrFlicks Antwort, wenn nur ein x gesucht wurde, so nahm ich die Frage: 'plot (1:10, main =" Hey Leute, das ist mein Plot für \ n ") mtext (Ausdruck (paste (8 <= x, "" <= 10)), Seite = 3) ' – Csislander

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

plot(1:10, main=heyTitle) 

Dank this answer für den atop() Trick.

EDIT: Hier ist die Zahl

EDIT 2: von another answer by G. Grothendieck borgen Klammern zu verwenden, Abstand zu fixieren.

enter image description here

+0

+1 für' atop'. –

+0

+1 für die Einführung von mir auf –

+0

Ich danke Ihnen beiden. Jetzt muss ich nur noch entscheiden, welche Lösung ich verwenden werde. – Nzuri

4

Try this:

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

Auf der windows() Gerät es wie folgt aussieht: screenshot

REVISED Abstand und 2. Zeile ein bisschen größer erste Zeile Spiel. Added rbatts atop Idee. Weitere Vereinfachung.

+0

Nette Verwendung von {}, um mit Abstand umzugehen. Ich werde deine Technik dort verwenden, um meine Antwort zu aktualisieren - hoffe, es macht dir nichts aus (ich habe vorher '8 <= ~ x ~ phantom() <= 10' verwendet, jetzt benutze' {8 <= x} * Phantom() <= 10' – rbatt

+1

OK, ich werde Ihnen ein {} für ein 'atop' eintauschen. –

Verwandte Themen