aes_string не оценивает вложенный ifelse правильно
Я пользуюсь вложенным ifelse
операторы для выделения экстремально высоких / низких значений в наборе данных. Вместо того, чтобы добавить дополнительный столбец для эстетики цвета (я знаю, как это сделать), я хотел попробовать использовать aes_string(... , colour = ...)
так как этот сюжет войдет в функцию (отсюда aes_string
вместо aes
).
Ниже приведен простой пример ggplot2
оценивая вложенные ifelse
заявления и неправильно раскраски неправильно.
library(ggplot2)
theme_set(theme_bw())
sample <- data.frame(x = 1:10, y = 1:10)
# [Plot 1] Works fine using aes and stipulating variables
ggplot(sample, aes(x = x, y = y)) +
geom_point(aes(colour = ifelse(x < 3, 1, ifelse(x > 7, 10, x)))) +
scale_colour_identity()
# [Plot 2] "x" replaced by "var" and "aes" replaced by "aes_string"
var = "x"
ggplot(sample, aes(x = x, y = y)) +
geom_point(aes_string(colour = ifelse(var < 3, 1, ifelse(var > 7, 10, var)))) +
scale_colour_identity()
[График 1] Вы можете видеть в начале и в конце цвета выделены синим (1) и красным (10) соответственно.
[График 2] Вы можете видеть, что все точки выделены красным цветом (10), указывая, что что-то пошло не так.
Любая помощь приветствуется!