当希腊字母以字符串形式提供时,如何在R图中显示希腊字母

3
我希望在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个回答

6
这对你有效吗?
x = "alpha[1]"
plot(1,1, t="n", xlab=parse(text=x))

0

我们可以给这个数据框取一个别的名字,比如说"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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接