ggplot2, aes против aes_string
Поэтому мне нужно заменить aesна aes_stringиз-за сбоя rcmdcheck().
Оригинал:
aes(
x = A,
y = pmax(B, C, na.rm = TRUE),
),
Мое замешательство касается Bи C. Могу ли я заключить их в кавычки, поскольку они находятся внутри pmaxфункции? Вот так:
aes_string(
x = "A",
y = pmax("B", "C", na.rm = TRUE),
),
Это еще одно решение ?:
aes(
x = .data$A, y = pmax(.data$B, .data$C, na.rm = TRUE),
),
ИЗМЕНИТЬ:
R CMD Проверьте ошибка в том , что не существует никакого глобального связывания для переменных A, Bи C.
Ответы
Разница между aesи aes_stringочень проста, aes_stringона интерпретирует строку, описывающую аргументы. Например. следующие работы
library(ggplot2)
data(mtcars)
ggplot(aes_string(x = "log(hp)", y = "1/log(mpg)", col = "factor(cyl)"), data = mtcars) +
geom_point() +
labs(col = 'cyl')
Это также задокументировано на help(aes_string)странице
aes_ и aes_string требуют, чтобы вы явно цитировали входные данные либо с помощью "" для aes_string (), либо с цитатой или ~ для aes_ ().
Но, как заявил MrFlick в комментариях, все эти функции устарели, что, я считаю, означает, что они сохранены для совместимости, но использование не рекомендуется.