2011-10-20 58 views
3

我想在R图中显示希腊字母,其中字母是数据框名称。例如,假设我有如何在字母作为字符串提供时在R图中显示希腊字母

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

我要绘制的α[1]〜阿尔法[2]用α被显示为希腊字母的而不是串即某事物。像

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

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

非常感谢

回答

6

这是否适合您?

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

太好了,谢谢。这工作正如我想要的 – Peter

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) 
相关问题