2012-05-16 26 views
5

Tôi đang cố gắng cố gắng vẽ biểu tượng Hy Lạp dưới dạng nhãn trục. Do cho Looping nhiều thửa với quy mô khác nhau, tôi muốn sử dụng một vector chứa tên biểu tượng thay vì sử dụng tên biểu tượng trong expression(), mà hoạt động tốt:Vẽ nhãn trục với các biểu tượng Hy Lạp từ một vector

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

Đối với một số lý do, tôi không thể thay thế "mu" với một vector chứa tên biểu tượng:

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

tôi tìm thấy một tương tự question, nhưng những gì làm việc cho các chức năng dường như không làm việc cho các ký hiệu Hy Lạp:

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

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

Tôi làm gì sai? Làm thế nào để có được một biểu tượng Hy Lạp để nhãn trục thông qua một vector?

+0

biểu thức là một chức năng nguyên thủy. Nó không đánh giá các đối số của nó. – vinux

+1

Trợ giúp [câu hỏi này] (http://stackoverflow.com/questions/10042258/generate-a-list-of-expression-literals-from-an-integer-sequence) có giúp được không? – fotNelton

+0

@fotNelton: Điều này sẽ không hoạt động ít nhất: ylab <- do.call ("biểu thức", lapply (k, hàm (i) thay thế (k * "mol/mol", danh sách (k = i)))) – Mikko

Trả lời

5

Hãy thử điều này:

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

Ai đó có thể giải thích lý do tại sao '*' là cần thiết và nó làm gì? – Henrik

+0

Cảm ơn baptiste! – Mikko

+1

'? Plotmath' gợi ý rằng nó được sử dụng trong' x * y' thành "juxtapose x và y", nghĩa là đặt chúng sau cái kia (không có dấu cách). – baptiste

Các vấn đề liên quan