weighted.mean averages values while giving some positions more influence than others.

Program

Play the script to change the final value's weight and watch the average move.

weight_last
weighted_mean.R
Replay: real traced execution (multi-file project)
values <- c(10, 20, 30)
weight_last <- 2
weights <- c(1, 1, weight_last)
average <- weighted.mean(values, weights)
cat(average, "\n", sep = "")
values <- c(10, 20, 30)
weight_last <- 3
weights <- c(1, 1, weight_last)
average <- weighted.mean(values, weights)
cat(average, "\n", sep = "")
values <- c(10, 20, 30)
weight_last <- 4
weights <- c(1, 1, weight_last)
average <- weighted.mean(values, weights)
cat(average, "\n", sep = "")
  1. values ← 10, 20, 30

    1values <- c(10, 20, 30)2weight_last <- 2
    values this step10, 20, 30values
  2. weight_last ← 2

    1values <- c(10, 20, 30)2weight_last <- 23weights <- c(1, 1, weight_last)
    values this step2weight_last
  3. weights ← 1, 1, 2

    2weight_last <- 23weights <- c(1, 1, weight_last)4average <- weighted.mean(values, weights)
    values this step1, 1, 2weights2weight_last
  4. average ← 22.5

    3weights <- c(1, 1, weight_last)4average <- weighted.mean(values, weights)5cat(average, "\n", sep = "")
    values this step22.5average10, 20, 30values1, 1, 2weights
  5. cat(average, " ", sep = "")

    4average <- weighted.mean(values, weights)5cat(average, "\n", sep = "")
    output22.5
    values this step22.5average
  1. values ← 10, 20, 30

    1values <- c(10, 20, 30)2weight_last <- 3
    values this step10, 20, 30values
  2. weight_last ← 3

    1values <- c(10, 20, 30)2weight_last <- 33weights <- c(1, 1, weight_last)
    values this step3weight_last
  3. weights ← 1, 1, 3

    2weight_last <- 33weights <- c(1, 1, weight_last)4average <- weighted.mean(values, weights)
    values this step1, 1, 3weights3weight_last
  4. average ← 24

    3weights <- c(1, 1, weight_last)4average <- weighted.mean(values, weights)5cat(average, "\n", sep = "")
    values this step24average10, 20, 30values1, 1, 3weights
  5. cat(average, " ", sep = "")

    4average <- weighted.mean(values, weights)5cat(average, "\n", sep = "")
    output24
    values this step24average
  1. values ← 10, 20, 30

    1values <- c(10, 20, 30)2weight_last <- 4
    values this step10, 20, 30values
  2. weight_last ← 4

    1values <- c(10, 20, 30)2weight_last <- 43weights <- c(1, 1, weight_last)
    values this step4weight_last
  3. weights ← 1, 1, 4

    2weight_last <- 43weights <- c(1, 1, weight_last)4average <- weighted.mean(values, weights)
    values this step1, 1, 4weights4weight_last
  4. average ← 25

    3weights <- c(1, 1, weight_last)4average <- weighted.mean(values, weights)5cat(average, "\n", sep = "")
    values this step25average10, 20, 30values1, 1, 4weights
  5. cat(average, " ", sep = "")

    4average <- weighted.mean(values, weights)5cat(average, "\n", sep = "")
    output25
    values this step25average
weighted.mean `weighted.mean(values, weights)` scales each value by its weight.
weights A larger weight gives one value more pull on the average.
numeric output `cat` writes the numeric result without R's vector label.