Ответ 1
В отличие от многих других языков, в R точка прекрасно действует в идентификаторах. В этом случае ..count..
является идентификатором. Однако в ggplot2
есть специальный код для обнаружения этого шаблона и для разметки точек. Маловероятно, что реальный код будет использовать идентификаторы, отформатированные таким образом, и поэтому это опрятный способ различать определенную и вычисленную эстетику.
Соответствующий код находится в конце layer.r:
# Determine if aesthetic is calculated
is_calculated_aes <- function(aesthetics) {
match <- "\\.\\.([a-zA-z._]+)\\.\\."
stats <- rep(FALSE, length(aesthetics))
grepl(match, sapply(aesthetics, deparse))
}
# Strip dots from expressions
strip_dots <- function(aesthetics) {
match <- "\\.\\.([a-zA-z._]+)\\.\\."
strings <- lapply(aesthetics, deparse)
strings <- lapply(strings, gsub, pattern = match, replacement = "\\1")
lapply(strings, function(x) parse(text = x)[[1]])
}
Он используется далее выше в функции map_statistic
. Если вычисленная эстетика присутствует, для графика используется другой фрейм данных (тот, который содержит, например, столбец count
).
Единственная точка .
- это еще один идентификатор, определенный в пакете plyr
. Как вы можете видеть, это функция.