当字母作为字符串提供时,如何在R图中显示希腊字母

时间:2011-10-20 20:42:11

标签: r

我想在R图中显示希腊字母,其中字母是数据框名称。例如,假设我有

dataframe <- read.table("input.dat");
cnames <- colnames(dataframe);
# asssume cnames[1] = "alpha[1]" cnames[2] = "alpha[2]"

我想绘制alpha [1] ~alpha [2],其中alpha显示为希腊字母而不是字符串,即......像

plot(as.formula(paste(cnames[1],"~",cnames[2])), xlab=expression(cnames[1]) ......)

然而,这不起作用,我不能谷歌解决方案。有谁知道这是怎么做到的吗?这个例子似乎微不足道,但在我的真实数据集中,我有很多列,我需要绘制一些随机选择的变量。

非常感谢

2 个答案:

答案 0 :(得分:6)

这对你有用吗?

x = "alpha[1]"
plot(1,1, t="n", xlab=parse(text=x))

答案 1 :(得分:0)

让我们将数据帧称为“dataframe”以外的东西,也许是“dfrm”。从上下文我猜你想要列名而不是数据帧的名称:

dfrm <-
structure(list(`alpha[1]` = 1:10, `alpha[2]` = c(10L, 9L, 8L, 
7L, 6L, 5L, 4L, 3L, 2L, 1L)), .Names = c("alpha[1]", "alpha[2]"
), row.names = c(NA, -10L), class = "data.frame")

plot(dfrm[,1],dfrm[,2], 
         xlab=parse(text=names(dfrm)[1]), ylab=parse(text=names(dfrm)[2]) )

如果您绝对需要使用用于构建公式的名称,那么这并不容易,但可以这样做:

 form <-as.formula(paste(deparse(as.name(names(dfrm)[1]), backtick=T), 
                         "~",
                         deparse(as.name(names(dfrm)[2]), backtick=T) 
                )     )  
form
# `alpha[1]` ~ `alpha[2]`

 plot(form, 
      xlab=parse(text=names(dfrm)[1]), 
      ylab=parse(text=names(dfrm)[2]) ,
      data=dfrm)