Ich möchte Vektoren von lateinischen und griechischen Text zusammenführen, um Plottitel, Achsenbeschriftungen, Legendeneinträge usw. zu generieren. Ich habe ein Trivial zur Verfügung gestellt Beispiel unten. Ich kann nicht herausfinden, wie man die griechischen Buchstaben in ihrer ursprünglichen Form wiedergeben kann. Ich habe verschiedene Kombinationen von expression
, parse
und apply
zum paste
Befehl versucht, aber ich war nicht in der Lage, den Code zu vektorisieren, der leicht gemischten lateinischen/griechischen Text für den Fall eines einzelnen Ausdruckes erzeugt (zB expression("A ("*alpha*")")
ist im Fall passend eines einzelnen Ausdrucks). innerhalb der legend()
AnweisungR: Erstellen von Vektoren lateinischen/griechischen Ausdruck für Plot Titel, Achsenbeschriftungen oder Legenden
data<-matrix(seq(20),nrow=5,ncol=4,byrow=TRUE)
colnames(data)<-c("A","B","C","D")
greek<-c(" (alpha)"," (beta)"," (gamma)"," (delta)")
matplot(data)
legend(1,max(data),fill=c("black","red","green","blue"),apply(matrix(paste(colnames(data),greek,sep=""),nrow=4,ncol=1),1,expression))
Könnten Sie mir bitte mit der apply()
Aussage helfen? Es erfordert eine gewisse Modifikation, um die gewünschte Ausgabe zu erzeugen (d. H. A (α), B (β), C (γ), D (δ)). Danke im Voraus.
Danke, Josh. Ihre Lösung ist sehr robust für verschiedene Eingaben. Könnten Sie erklären, warum 'A (B)', 'A * B' und' A ~ B' in der 'substitutive'-Anweisung funktionieren, während' A B' nicht funktioniert? Könnten Sie auch für die neuen Benutzer kommentieren, warum die 'as.'-Syntax benötigt wird? Ich habe gelesen, dass "substitute" einen unausgewerteten Ausdruck zurückgibt, daher ist es sinnvoll, auf den Ausdruck "substitute" mit "as.expression" einzuwirken. Was ist mit 'as.name'? – user001
@ user001 - Wie Sie wahrscheinlich wissen, [[dieser Abschnitt] (http://cran.r-project.org/doc/manuals/R-lang.html#Computing-on-the-language) der "R-Sprache Definition "ist ein guter Ausgangspunkt, um sich an Rs Sprachelementen zu orientieren und sie zu manipulieren. 'substitute()' kann als erstes Argument eine syntaktisch gültige Aussage nehmen. 'A B' ist nicht" erlaubt ", weil es syntaktisch gültig ist. (Können Sie sich irgendeine R-Anweisung vorstellen, die an der Befehlszeile mit dieser Form eingegeben wurde? Ich dachte nicht!). –
@ user001 - 'substitute()' gibt * generell * keine Objekte der Klasse "expression" zurück. (Siehe den "Value" -Abschnitt von "? Substitute", und spiele mit "class (substitute())", um zu sehen, was ich meine: "class (substitute (x)); class (substitute (x (y))) ; class (substitute ({x; y})); class (substitute (expression (x))) usw.) Ich benutze 'as.expression()', um * was auch immer * zu einem Expression-Objekt zurückzuholen. Ausdrücke sind ein Typ eines Vektors, so dass 'sapply()' nur die mehreren länge-1-Ausdrücke zu einem einzigen Länge-4-Expressionsvektor verkettet. Siehe '? As.name', um etwas über' as.name() 'zu erfahren. Hoffe das hilft! –