2012-05-16 3 views
5

Sto cercando di tracciare i simboli greci come etichette degli assi. A causa di loop diversi appezzamenti con diverse scale, vorrei utilizzare un vettore che contiene il nome del simbolo invece di utilizzare il nome del simbolo all'interno expression(), che funziona bene:Tracciare le etichette degli assi con simboli greci da un vettore

x <- rnorm(10, 5,6) 
y <- rnorm(10, 2,1) 
xlab <- expression(paste(mu, "mol/mol")) 
plot(x,y, xlab = xlab) 

Per qualche ragione, non posso sostituire "mu" con un vettore contenente il nome del simbolo:

k <- "mu" 
xlab <- expression(paste(get(k), "mol/mol")) 
plot(x,y, xlab = xlab) 

ho trovato un simile question, ma che cosa ha funzionato per le funzioni non sembra funzionare per simboli greci:

ylab <- substitute(paste(nn, "mol/mol"), list(nn=k)) 
xlab <- bquote(.(k) * "mol/mol") 

plot(x,y, ylab = ylab, xlab = xlab) 

Cosa faccio di sbagliato? Come ottenere un simbolo greco sull'etichetta dell'asse attraverso un vettore?

+0

espressione è una funzione primitiva. Non valuta i suoi argomenti. – vinux

+1

Questo [Q & A] (http://stackoverflow.com/questions/10042258/generate-a-list-of-expression-literals-from-an-integer-sequence) aiuta? – fotNelton

+0

@fotNelton: Questo non funzionerebbe almeno: ylab <- do.call ("espressione", lapply (k, funzione (i) sostituto (k * "mol/mol", lista (k = i)))) – Mikko

risposta

5

Prova questo:

xlab = parse(text=paste(k, "*mol/mol")) 
+0

Qualcuno può spiegare perché il '*' è necessario e cosa fa? – Henrik

+0

Grazie baptiste! – Mikko

+1

'? Plotmath' suggerisce che sia usato in' x * y' per "giustapporre x e y", cioè per metterli uno dopo l'altro (senza spazio). – baptiste