Map_dbl в R для замены цикла for

#r #loops #purrr

#r #циклы #мурлыканье

Вопрос:

Это простой вопрос, но у меня были проблемы с его решением, поэтому, пожалуйста, не смейтесь надо мной.

Мне дано задание воссоздать мою собственную функцию для mean в R вместо использования встроенной функции mean.

Условием для моей функции является то, что мне нужно использовать map_dbl для обработки любой итерации в моей функции.

Я знаю, что mean = (sum of all elements)/(number of elements)

Вопрос в том, знает ли кто-нибудь, как вычислить сумму всех элементов, используя map_dbl?

Комментарии:

1. Среднее значение — это скорее операция сокращения, чем отображение : x <- c(1:10); Reduce(' ',x)/Reduce(' ', T | x);

2. @Waldi Если мой единственный вариант — использовать map_dbl, как я буду перебирать список элементов?

3. не могли бы вы пока предоставить свой код цикла?

4.предполагая, x <- c(1,2,3,4,5) что я хочу найти сумму элементов в x, которые я собираюсь сделать: counter <- 0 map_dbl(x, ~{counter <- counter .x}) Тем не менее, это дает мне {1,2,3,4,5} вместо 15, которые я хочу

Ответ №1:

Немного перебор:

 x <- c(1:10)
counter <- 0
mapsum <- map_dbl(x, ~{counter <<- counter   .x})
mapsum
[1]  1  3  6 10 15 21 28 36 45 55
tail(mapsum,1)
55
  

Как упоминалось в комментариях, это работает, но sum / mean — это операция уменьшения, а не операция отображения.