R`parse()`用于下标混合数字和字母

时间:2016-03-12 17:24:07

标签: r ggplot2

我正在尝试在ggplot facet标签中显示下标,其中使用parse()在下标中有混合字母和数字。

这有效:

>parse(text="cI[933]")

这样做:

>parse(text="cI[W]")

但不是这些:

>parse(text="cI[933W]")
Error in parse(text = "cI[933W]") : <text>:1:7: unexpected symbol
1: cI[933W
          ^

> parse(text="cI[9W33]")
Error in parse(text = "cI[9W33]") : <text>:1:5: unexpected symbol
1: cI[9W33
        ^

有关ggplot中的示例:

data(mtcars)
mtcars$cyl2 <- factor(mtcars$cyl, labels = c("cI[123]", "cI[ABC]", "cI[456]"))
qplot(wt, mpg, data = mtcars) + facet_grid(. ~ cyl2, labeller = label_parsed)

这很好,但是:

data(mtcars)
mtcars$cyl2 <- factor(mtcars$cyl, labels = c("cI[AB3]", "cI[2CD]", "cI[EF1]"))
qplot(wt, mpg, data = mtcars) + facet_grid(. ~ cyl2, labeller = label_parsed)

......没有。

1 个答案:

答案 0 :(得分:5)

这是失败的,因为2CD根据R解析器不是合法符号(符号必须以字母字符开头,并且必须只包含字母数字+ [._]字符(我认为))。作为一种快速解决方法,您可以使用单引号保护非法符号:

mtcars$cyl2 <- factor(mtcars$cyl, 
    labels = c("cI[AB3]", "cI['2CD']", "cI[EF1]"))

引号不会出现在情节标签中。

来自introduction to R

  

通常所有字母数字符号都是允许的(在某些国家/地区包含重音字母)加上“。”和“_”,但限制名称必须以“。”或字母开头,如果以“。”开头“第二个字符不能是数字。