2011-08-11 56 views
4

我想在R中使用標題「溼地中的CO2排放量」,而CO2中的2標爲下標,並且該區域的值(這裏:「溼地」)包含在名爲「地區」的變量中。在軸標題中同時使用下標和變量值R

region = "wetlands" 
plot (1, 1, main=expression(CO[2]~paste(" emissions in ", region))) 

問題是,沒有粘貼變量的值,而是變量的名稱。這給出了「區域內的二氧化碳排放量」,而不是「溼地中的二氧化碳排放量」。我也嘗試過:

region="wetlands" 
plot (1,1,main=paste(expression(CO[2]), "emissions in", region)) 

但是下標不在這裏完成,標題是:「溼地中的CO [2]排放」。

是否可以通過某種方式將變量值轉換爲表達式?

感謝您的幫助,

斯文

+1

Duplicate http://stackoverflow.com/questions/4302367/concatenate-strings-and-expressions-in-a-plots-title –

回答

12

沒有必要使用paste()來產生plothmath風格的註釋表達式。這只是正常:

region <- "foo" 
plot (1, 1, main = bquote(CO[2] ~ "emissions in" ~ .(region))) 

,並提供:

enter image description here

使用paste()剛剛得到的方式。

鈮:你必須引用"in",因爲解析器抓住它作爲R語法的關鍵部分,否則。

2

對於你的情況,從複製的鏈接的答案之一被盜:

x <- "OberKrain" 
plot(1:10, 1:10, main = bquote(paste(CO[2], " in ", .(x)))) 

enter image description here

+0

羅馬,你的代碼不起作用。它返回「OberKrein」而不是「溼地」。 :-D –

+0

它不適用於我:>替代(「T [a] max」) [1]「T [a] max」; bquote(「T [a] max」) [1]「T [a] max」。根據你的例子,括號之間的「a」應該出現在下標中。不是嗎? –

+0

@Aguscamacho檢查你的語法。在這種情況下,你不應該使用';'。 –

6

您可以使用替代品:

mn <- substitute(CO[2]~ "emissions in" ~ region, list(region="wetlands")) 
plot(1, 1, main=mn) 

substitute plot

?substitute幫助文件:

典型的利用替代品是爲 數據集和圖表創建信息標籤。下面的myplot示例顯示了該設施的一個簡單使用 。它使用deparse函數和替代函數爲plot創建 標籤,這些標籤是函數myplot的實際參數 的字符串版本。

+1

只需添加:如果需要在表達式中添加變量而不添加空格,則可以根據'plotmath'使用x * y而不是x〜y –