Я нашел этот код где-то в сети и пытался настроить его так, как мне нужно.При этом я обнаружил несколько ситуаций, в которых выдается сообщение об ошибке, но я просто не понимаю, почему.
Я пробовал следующий код с 4 различными версиями вычисления среднего значения:
library(ggplot2)
mtcars$cyl <- as.factor(mtcars$cyl)
means1 <- aggregate(mtcars[1], mtcars[2], mean)
means2 <- aggregate(list(mpg = mtcars$mpg), list(cyl = mtcars$cyl), mean)
means3 <- aggregate(mtcars[1], list(mtcars$cyl), mean)
means4 <- aggregate(mtcars$mpg, mtcars[2], mean)
means <- means1 #or means2, means3, means4
means[2] <- round(means[2], digits=2)
p <- ggplot(data = mtcars, aes(x = cyl, y = mpg))+
geom_dotplot(binaxis = "y", stackdir = "center")
p + stat_summary(fun.data = "mean_sdl", fun.args = list(mult = 1),
geom = "errorbar", width = 0.2, color = "red") +
stat_summary(fun.y = mean, geom = "point", color = "red") +
geom_text(data = means, aes(label = means[2]),hjust = -0.5)
Отлично работает со средствами 1 и средствами2.Но средство 3 выдает сообщение об ошибке:
Ошибка в FUN (X [[i]], ...): объект 'cyl' не найден.
И означает 4выдает сообщение об ошибке:
Ошибка: эстетика должна быть либо длины 1, либо соответствовать данным (3): label, x, y
Однако, если я опущутогда строка geom_text и средство 3, и средство 4 создают график безо всякой ошибки.
Я хочу понять, как изменение в расчете средних влияет на последнюю строку.Вероятно, это действительно просто, но я просто не могу понять это.Что именно вызывает эти ошибки и почему нет ошибки, если я опускаю geom_text?
Я сравнил кадры данных, прежде чем решил разместить здесь.И это были мои (заведомо неправильные) выводы:
geom_text(means, aes(label = mpg) )
работает со средствами1 и средствами2.Поскольку столбец 2 по-прежнему называется mpg в means3, он должен работать, но это не так.Почему бы и нет?
geom_text(data = means, aes(label = mpg) )
не работает с means4, так как больше нет столбца mpg.Поэтому я изменил его на geom_text(data = means, aes(label = means[2])
, который должен работать независимо от имени столбца.Есть столбец cyl, поэтому он не показывает ту же ошибку, что и mean3.Но почему он жалуется на длину?Все четыре средства показывают длину, равную 2.