R - функция разбора не работает должным образом

В следующем примере (обратите внимание на различия в метках оси Y) я использую переменную для заполнения метки оси ggplot2, что интересно ~ производит намного большие пространства, и дополнительные пространства появляются вокруг увеличенного -,

введите описание изображения здесь

library(ggplot2)

#LabelY <- "Miles per Gallon-Car"
LabelY <- parse(text="Miles~per~Gallon-Car")

a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
        ggtitle("Fuel Efficiency of 32 Cars") +
        xlab(LabelY) + ylab(LabelY) +
        theme(text=element_text(size=16))
print(a)

Я использую синтаксический анализ, потому что это позволяет мне использовать более сложные примеры, включая atop и греческие буквы.

Могу ли я использовать синтаксический анализ для импорта сложных строк, сохраняя при этом желаемый "менее развернутый" внешний вид содержимого?

1 ответ

Решение

Похоже, что добавление дефиса к обратной черте позволит вам сохранить дефис вместо того, чтобы превратить его в тире.

Здесь я поместил новую дефисную версию метки оси на ось x и оставил ось y в качестве оригинала для сравнения.

LabelY <- parse(text="Miles~per~Gallon-Car")
LabelY2 <- parse(text="Miles~per~`Gallon-Car`")

ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
    ggtitle("Fuel Efficiency of 32 Cars") +
    xlab(parse(text = LabelY2)) + ylab(LabelY) +
    theme(text=element_text(size=16))

Как вы указали в комментариях, вы также можете использовать фигурную скобку и одинарную кавычку вокруг дефисного термина, чтобы получить тот же эффект.

parse(text="Miles~per~{'Gallon-Car'}")

Другие вопросы по тегам