用expression命令将两个向量粘贴在一起

时间:2015-02-10 16:48:03

标签: r

我正在尝试创建一个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和替补,并没有取得多大进展。任何人都有提示帮助我吗?

2 个答案:

答案 0 :(得分:3)

这有点棘手,因为表达式函数需要一个表达式列表。因此,您需要将paste返回的字符串转换为未评估的表达式列表。一种方式是这样的

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

答案 1 :(得分: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)