# The Mean - Screen 14 & The Weighted Mean, Screen 4

1. The below code geom vline = length(sampling_errors) should be length( sample size).
Pls. correct.

Generating a scatter plot to represent visually how the sampling error changes as the sample size increases:
`library(ggplot2) ggplot(data = df, aes(x = sample_sizes, y = sampling_errors)) + geom_point() + geom_hline(yintercept = 0) + **geom_vline(xintercept = **length(sampling_errors)**)** + labs(x = "Sample size", y = "Sampling error")`

1. In the code below, I didn’t understand the continuity :
compute_weighted_mean <- function(distribution, weights) {
weighted_distribution <- purrr::map2_dbl(distribution, weights, function(x, y) x * y)

sum(weighted_distribution) / sum(weights)
}

Is sum(weighted_distribution/sum(weights) a separate line code.
Why function(x,y) is again used inside the main func().
We just have to calculate the dot product x*y & divide by sum(weights)

PS: I am new to coding & have only started in this course.

Hello @sharathnandalike,

We will fix it. Thank you!

You’re right! The simplest way to do it is `x*y over sum(weights)`, but for the sake of learning, we want to use a for-loop-like structure to compute it as we did in the mean mission; being close to the weighted mean mathematical formula. We will clarify this or make it simple as you suggest.

FYI, `purrr::map2_dbl()` is a mapper function from the package `purrr` and it imitates a for-loop with two inputs and the `function(x, y)` is what we call anonymous function. This piece of code is equivalent to:

``````weighted_distribution <- 0
for (i in 1:length(distribution)) {
x <- distribution[i]
y <- weights[i]
weighted_distribution <- x*y
}
``````

We teach both mapper functions and anonymous functions in our content (checks references).