ggplot - faceta por salida de función

No estoy seguro de cómo facetar por una función de los datos en eldata elemento de unggplot objeto. En el siguiente ejemplo de juguete, lo que quiero hacer es algo como esto:

df <- data.frame(x=1:8, y=runif(8), z=8:1)
ggplot(df, aes(x=x, y=y)) + geom_point() + facet_wrap( ~ (z %% 2))

Pero eso da el error:Error in layout_base(data, vars, drop = drop) : At least one layer must contain all variables used for facetting.

Puedo lograr el resultado deseado transformando el marco de datos:

ggplot(transform(df, z=z%%2), aes(x=x, y=y)) + geom_point() + facet_wrap( ~ z)

pero a menudo es deseable no usar tal transformación, por ejemplo, si ya me dieron unaggplot objeto y quiero añadir algunas facetas ad-hoc a él.

Respuestas a la pregunta(1)

Su respuesta a la pregunta