使用数学注释作为R中的因子

时间:2011-09-22 02:58:05

标签: r expression r-factor

我引用了我的previous question,想了解更多有关R中factor的特征的信息。

假设我有一个这样的数据集:

temp <- data.frame(x=letters[1:5],
                   y=1:5)
plot(temp)

我可以轻松地将x的标签更改为其他字符:

levels(temp[,"x"]) <- letters[6:10]

但是,如果我想将其更改为某些expression

levels(temp[,"x"]) <- c(expression(x>=1),
                        expression(x>=2),
                        expression(x>=3),
                        expression(x>=4),
                        expression(x>=5))

>=符号在图中不会相应更改。我发现class(levels(temp[,"x"]))character,但expression(x>=1)不是。{/ p>

如果我想添加一些数学注释作为因素,我该怎么办?

3 个答案:

答案 0 :(得分:2)

我会把它们留作字符串

levels(temp[,"x"]) <- paste("x>=", 1:5, sep="")

如果您想将它们包含为轴标签,可以执行以下操作将它们转换为表达式:

lev.as.expr <- parse(text=levels(temp[,"x"]))

对于你的情节,你可以这样做:

plot(temp, xaxt="n")
axis(side=1, at=1:5, labels=lev.as.expr)

答案 1 :(得分:2)

我没有在ggplot中看到任何级别参数,并且将levels分配给字符向量应该不起作用。如果你试图分配表达式向量,你应该只使用一个expression调用并用逗号分隔参数,你应该在scale函数中使用labels参数:

 p <- qplot(1:10, 10:1)+ scale_y_continuous( breaks= 1:10, 
                            labels=expression( x>= 1, x>=2, x>=3, x>= 4,x>=5,
                                              x>= 6, x>=7, x>= 8,x>=9, x>= 10) )
 p

enter image description here

答案 2 :(得分:0)

表达式用于生成绘图和输出的文本,但不能是变量名称本身。您必须使用axis()命令生成自己的标签。因为它可以评估表达式,你可以试试......

plot(temp, xaxt = 'n')
s <- paste('x>', 1:5, sep = '=')
axis(1, 1:5, parse(text = s))