我想在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]) ......)
然而,这不起作用,我不能谷歌解决方案。有谁知道这是怎么做到的吗?这个例子似乎微不足道,但在我的真实数据集中,我有很多列,我需要绘制一些随机选择的变量。
非常感谢
答案 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)