Как вычислить среднее, не используя функцию среднего в R? - PullRequest
2 голосов
/ 13 апреля 2020

Мне нужно вычислить среднее R, избегая использования векторизованных R-функций. Это мой код:

average <- function(x) {
for (s in seq_along(x)) {
 z <- 0
   z <- x + z 
  z <- (z / s) 
}
print(z) 
}

x_prob <- c(5, 19, 23, 56)
mean_x_prob <- average(x_prob)
mean_x_prob

По некоторым причинам я получаю следующие ответы:

[1]  1.25  4.75  5.75 14.00

R в основном делит каждое значение, которое я подключаю, на количество значений. Как избежать этого и вычислить среднее значение для всего вектора?

1 Ответ

1 голос
/ 13 апреля 2020

Поскольку мы зацикливаемся на последовательности вектора, используйте его в качестве индекса для поднабора значения и добавьте его к инициализированному 'z и за пределами l oop, разделите' z 'на length из' x '

average <- function(x) {
z <- 0
 for (s in seq_along(x)) {

     z <-   z + x[s]

   }
  z/length(x)
  }

average(x_prob)
#[1] 25.75

- проверка со встроенным mean

mean(x_prob)
#[1] 25.75
...