2013-02-25 69 views
22

我試圖用下列標籤標註一個圖:使用變量r的表達式

「某些測定EC50(uM)」,其中「u」是微符號。

我目前有:

assay <- "Some Assay" 
plot(0,xlab=expression(paste(assay," AC50 (",mu,"M)",sep=""))) 

但是,讓 「法EC50(UM)」,而不是所期望的 「一些分析EC50(UM)」。

對此提出建議?謝謝。

我也試過:

paste(assay,expression(paste(" AC50 (",mu,"M)",sep="")),sep="") 
+2

你是不是要編寫'化驗',然後'assay1'? – 2013-02-25 18:48:02

+0

是的,對不起。我修好了它。從我的代碼複製一點速度。 – dayne 2013-02-25 18:50:48

回答

30

你想要的bquote()組合,有點plotmath福:

assay <- "Some Assay" 
xlab <- bquote(.(assay) ~ AC50 ~ (mu*M)) 
plot(0, xlab = xlab) 

~是間隔運營商和*手段並列的內容向左和運營商的權利。在bquote()中,將查找包含在.()中的任何內容並用指定對象的值替換;所以.(assay)將被替換爲Some Assay的表達式。

+0

完美的作品,謝謝! – dayne 2013-02-25 18:57:12

+0

哇!謝謝! – Anthony 2015-01-23 20:37:57

2

您也可以嘗試窮人的做法:

assay <- "Some Assay" 
plot(0, xlab = paste0(assay, " AC50 (µM)")) 

它指定畝字符,而不是直接使用表達式(和paste0只是pastesep = "")。

2

使用mtext和另一種選擇bquote

plot(0,xlab='') 
Lines <- list(bquote(paste(assay," AC50 (",mu,"M)",sep=""))) 
mtext(do.call(expression, Lines),side=1,line=3) 

注意,我設置了xlab在第一標繪爲null。

編輯 無需調用表達式,因爲bquote將創建一個表達式,用它們的值替換包裝在。()中的元素。所以一個goodanswer是:

plot(0,xlab='') 
Lines <- bquote(paste(.(assay)," AC50 (",mu,"M)",sep="")) 
mtext(Lines,side=1,line=3) 
+1

這違背了'bquote()'的要點,它是用它們的值替換包裹在'。()'中的元素來形成一個表達式。 – 2013-02-25 19:05:45

+0

@GavinSimpson謝謝,我明白你的觀點。現在看起來好嗎? – agstudy 2013-02-25 19:10:40