Vorrei unire i vettori di testo latino e greco per generare titoli di trama, etichette degli assi, voci delle legende, ecc. Ho fornito un banale esempio sotto. Non riesco a capire come rendere le lettere greche nella loro forma nativa. Ho provato varie combinazioni di expression
, parse
e apply
al comando paste
ma non sono stato in grado di vettorializzare il codice che genera facilmente testo misto Latino/Greco per il caso di una singola espressione (ad esempio, expression("A ("*alpha*")")
è adatto nel caso di una singola espressione).R: creazione di vettori di espressioni latine/greche per titoli di plot, etichette degli assi o legende
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))
La prego di aiutarmi con la apply()
dichiarazione all'interno dell'istruzione legend()
? Richiede qualche modifica per produrre l'uscita desiderata (cioè A (α), B (β), C (γ), D (δ)). Grazie in anticipo.
Grazie, Josh. La tua soluzione è molto robusta per diversi input. Potresti spiegare perché 'A (B)', 'A * B' e' A ~ B' funzionano nell'istruzione 'sostitutiva', mentre' A B' no? Puoi anche commentare per i nuovi utenti perché è necessaria la sintassi 'as'? Ho letto che 'sostituto' restituisce un'espressione non valutata, quindi agire sull'output di' sostituto' con 'as.expression' ha senso. Che dire di 'as.name'? – user001
@ user001 - Come probabilmente saprai, [questa sezione] (http://cran.r-project.org/doc/manuals/R-lang.html#Computing-on-the-language) del "R Language Definizione "è un buon punto di partenza per appoggiarsi sugli elementi del linguaggio di R e su come manipolarli. 'sostituto()' può prendere come primo argomento qualsiasi affermazione sintatticamente valida. 'A B' non è" permesso "perché è sintatticamente valido. (Riesci a pensare a qualsiasi istruzione R digitata sulla riga di comando che ha quel modulo? Non pensavo!). –
@ user001 - 'sostituto()' non * generalmente * restituisce oggetti di classe "espressione". (Vedi la sezione "Valore" di "? Sostituto', e gioca con' class (sostituto()) 'per vedere cosa intendo:' class (sostituto (x)); class (sostituto (x (y))) ; class (sostituto ({x; y})); class (sostituto (expression (x))) 'ecc.) Uso' as.expression() 'per forzare * qualunque * ritorna a un oggetto espressione. le espressioni sono un tipo di vettore, quindi 'sapply()' concatena le diverse espressioni length-1 in un singolo vettore di espressione length-4. Vedi '? As.name' per informazioni su' as.name() '. Spero che questo ti aiuti! –