#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 — это операция уменьшения, а не операция отображения.