Функция R для определения количества элементов до того, как сумма превысит порог - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь воссоздать функцию из Сумма первых n элементов вектора , но там, где это решение принимает аргумент для суммирования первых n элементов вектора, я хотел бы получить аргумент, который порог (включая значение по умолчанию), элементы суммируют до (или более).

После попытки различных for и / или while возможностей и поиска в StackOverflow я оказался здесь: неясно, как реализовать порог и установить n_elements.

У меня есть эта логика c, которая возвращает 0 для данного вектора. Кажется, что часть n_elements = x[i] + 1 не верна.

theFunc <- function(x, threshold = 5){
  n_elements = 0
  while (sum(head(x)) < threshold){
    n_elements = x[i] + 1
  }
  return(n_elements)
}

Вызов:

x <- c(0, 0, 1, 1, 2, 3, 6, 7)
theFunc(x)
[1] 0

Если входной сигнал такой же, как указано выше, и пороговое значение равно 5, функция должна вернуться 6 (количество элементов), потому что 0 + 0 + 1 + 1 + 2 + 3 = 7 и выше порога.

1 Ответ

1 голос
/ 17 февраля 2020

Простая функция без al oop выглядит следующим образом:

theFunc <- function(x, threshold = 5){
  sum(cumsum(x) < threshold) + 1
}
x <- c(0, 0, 1, 1, 2, 3, 6, 7)
theFunc(x)
[1] 6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...