Dodaj pionową linię z innym przecięciem dla każdego panelu w ggplot2

Używam ggplot2 do tworzenia paneli histogramów i chciałbym móc dodać linię pionową przy średniej dla każdej grupy. Ale geom_vline () używa tego samego punktu przecięcia dla każdego panelu (tj. Średniej globalnej):

require("ggplot2")
# setup some sample data
N <- 1000
cat1 <- sample(c("a","b","c"), N, replace=T)
cat2 <- sample(c("x","y","z"), N, replace=T)
val <- rnorm(N) + as.numeric(factor(cat1)) + as.numeric(factor(cat2))
df <- data.frame(cat1, cat2, val)

# draws a single histogram with vline at mean
qplot(val, data=df, geom="histogram", binwidth=0.2) + 
  geom_vline(xintercept=mean(val), color="red")

# draws panel of histograms with vlines at global mean
qplot(val, data=df, geom="histogram", binwidth=0.2, facets=cat1~cat2) + 
  geom_vline(xintercept=mean(val), color="red")

Jak mogę sprawić, aby używał średniej grupy każdego panelu jako przechwycenia x? (Dodatkowe punkty, jeśli możesz również dodać etykietę tekstową przy linii z wartością średniej.)

questionAnswers(2)

yourAnswerToTheQuestion