2015-02-10 48 views
3

我試圖創建一個y軸標籤,它是通過將兩個長度相同的向量粘貼在一起生成的。問題在於第一個元素需要斜體。這裏有一個例子...使用表達式命令粘貼兩個向量

n <- 1:5 
t <- LETTERS[1:5] 
together <- paste(t, n) 

plot(x=1:5, y=1:5, yaxt="n") 
axis(2, at=1:5, label=together, las=2) 

所以,我想要t元素斜體。我環顧了表情,bquote和替補,並沒有取得太大的進展。任何人都有提示幫助我嗎?

回答

3

這有點棘手,因爲表達式函數需要一個表達式列表。因此,您需要將paste返回的字符串轉換爲未評估表達式的列表。一種方法是這樣的

together <- do.call(expression, as.list(parse(text = paste0("italic(", t, ")~", n)))) 
1

你可以使用bquote

together <- as.expression(sapply(seq_along(t), function(i) 
        bquote(italic(.(t[i]))*.(n[i])))) 

或者使用for循環

v1 <- c() 
for(i in seq_along(t)){ 
    v1 <- c(v1, bquote(italic(.(t[i]))*.(n[i]))) 
    } 
together <- as.expression(v1)