I can not find the documentation for the double dots around density
set.seed(1234)
df <- data.frame(cond = factor(rep(c(\"A\",\"B\"), each=200)), rating =
Unlike many other languages, in R, the dot is perfectly valid in identifiers. In this case, ..count..
is an identifier. However, there is special code in ggplot2
to detect this pattern, and to strip the dots. It feels unlikely that real code would use identifiers formatted like that, and so this is a neat way to distinguish between defined and calculated aesthetics.
The relevant code is at the end of 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]])
}
It is used further up above in the map_statistic
function. If a calculated aesthetic is present, another data frame (one that contains e.g. the count
column) is used for the plot.
The single dot .
is just another identifier, defined in the plyr
package. As you can see, it is a function.