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

dbg*_*dbg 3 r ggplot2

我试图在ggplot facet标签中显示下标,其中下标中有混合字母和数字parse().

这有效:

>parse(text="cI[933]")
Run Code Online (Sandbox Code Playgroud)

这样做:

>parse(text="cI[W]")
Run Code Online (Sandbox Code Playgroud)

但不是这些:

>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
        ^
Run Code Online (Sandbox Code Playgroud)

有关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)
Run Code Online (Sandbox Code Playgroud)

这很好,但是:

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)
Run Code Online (Sandbox Code Playgroud)

...才不是.

Ben*_*ker 5

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

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

引号不会显示在图标签中.

从R的介绍:

通常允许使用所有字母数字符号(在某些国家/地区,这包括带重音的字母)加上"." 和'_',限制名称必须以'.'开头.或者是一封信,如果它以"."开头.第二个字符不能是数字.