geom_smooth com facet_grid e diferentes funções de ajuste

Primeiro, desculpas pelo exemplo, mas não consegui encontrar um conjunto de dados melhor para demonstrar o problema. Felizmente, será suficiente. Digamos que eu esteja tentando criar uma grade faceta de transmissão (automática vs. manual) e o número de marchas domtcars conjunto de dados que plota mpg contra deslocamento, assim:

# Load library
library(ggplot2)

# Load data
data(mtcars)

# Plot data
p <- ggplot(mtcars,aes(x = disp, y = mpg)) + geom_point() + facet_grid(gear ~ am)
p <- p + geom_smooth()
print(p)

que dá,

Observe que eu adicionei uma linha de tendência usandogeom_smooth e optou por usar uma curva de loess. Posso ajustar funções definidas pelo usuário em vez de uma curva de loess usandonls para o método e, em seguida, declarando uma fórmula, o que é ótimo. Mas é possível encaixardiferente curvas especificadas pelo usuário para cada faceta? Por exemplo, uma regressão linear para o painel superior esquerdo e uma exponencial decadente para o canto inferior direito. Isso é possível? Ou estou usando um martelo para aparafusar?

EDITAR: Uma solução para funções de ajuste personalizadas (isto é, definidas pelo usuário) é fornecidaaqui.

questionAnswers(1)

yourAnswerToTheQuestion