2015-02-10 23 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)