2009-09-05 75 views
6

我想在R中創建一個對角線上寫有希臘字母的標籤。我試過創建一個自定義的text.panel函數,它將標籤封裝在expression()調用中,但這不起作用。如何在R中的一對圖的對角線上打印希臘字母?

下面是一個簡單的測試案例:

pairs.greek <- function(x, ...) 
{ 
    panel.txt <- function(x, y, labels, cex, font, ...) 
    { 
    lab <- labels 
    text(0.5, 0.5, expression(lab), cex=cex, font=font) 
    } 
    pairs(x, text.panel=panel.txt) 
} 
dat <- data.frame(alpha=runif(10), beta=runif(10), gamma=runif(10)) 
pairs.greek(dat) 

回答

5

expression(lab)實際上並沒有評估lab所以你結束了所有的標籤是lab。相反,你可以將該行更改爲:

text(0.5, 0.5, parse(text=lab), cex=cex, font=font) 

哪個會做你想要的。請注意0​​函數也接受標籤參數,所以這也可以工作:

pairs(dat, labels=c(expression(alpha), expression(beta), expression(gamma)))