Question:

It is a follow-up <a href="https://stackoverflow.com/questions/37536950/ggplot2-add-p-values-to-the-plot/39331729#39331729" rel="nofollow">question</a>. When I run the code given below, I get warning message that I think is due to no facets requirement in my code while the source code mentioned in link included facets. Have a look and please let me know which part needs to be amended. Looking forward!

Code:

```
library(dplyr)
library(ggplot2)
library(ggpmisc)
df <- diamonds %>%
dplyr::filter(cut%in%c("Fair","Ideal")) %>%
dplyr::filter(clarity%in%c("I1" , "SI2" , "SI1" , "VS2" , "VS1", "VVS2")) %>%
dplyr::mutate(new_price = ifelse(cut == "Fair",
price* 0.5,
price * 1.1))
p <- ggplot(df, aes(x,y, color=factor(cut)))
p <- p + stat_smooth(method = "lm", formula = y ~ x-1, size = 1, level=0.95)
p <- p + geom_point(alpha = 0.3)
p <- p + stat_poly_eq(aes(label = paste(..rr.label..)),
label.x.npc = "right", label.y.npc = 0.15, formula = formula,
parse = TRUE, size = 3) +
stat_fit_glance(method = 'lm', method.args = list(formula = formula),
geom = 'text', aes(label = paste("P-value = ",
signif(..p.value.., digits = 4), sep = "")),label.x.npc = 'right',
label.y.npc = 0.35, size = 3)
print(p)
```

Warning messages:

1: Computation failed in `stat_poly_eq()`

:
object of type 'closure' is not subsettable

2: Computation failed in `stat_fit_glance()`

:
object of type 'closure' is not subsettable

Short answer: You need to add

```
formula <- y ~ x
```

(or whatever you define your formula to be) before you call `ggplot`

(i.e. before the line that reads `p <- ggplot(...)`

.

<a href="http://adv-r.had.co.nz/Functional-programming.html#closures" rel="nofollow">A "closure" is a type of function in R.</a> So the warning message "object of type 'closure' is not subsettable" means that whatever code you were running was not expecting an object that's a function.

When we look closely at your code, we see `formula = formula`

in your call to `stat_poly_eq`

and `stat_fit_glance`

. Note that `formula`

is a function in R. If you don't define a `formula`

object separately, R will take you to mean that you are referring to the `formula`

function. `stat_poly_eq()`

and `stat_fit_glance()`

are complaining because they expect the `formula`

<em>argument</em> in the function to be a `formula`

-class object, not a function.

More generally, you shouldn't name your formulas "formula" because it creates confusion. You could use e.g. "model" instead.