Мне нужно вычесть число из вектора таким образом, чтобы оно последовательно вычиталось из элементов. В качестве примера рассмотрим вектор a = c(8, 4)
. Если я хочу последовательно вычесть 9 из этого вектора, я сначала вычитаю 9 из первого элемента вектора, 8. Это оставляет 0 для первого элемента с напоминанием 1, которое затем вычитается из второго элемента. Это оставляет 4-1 = 3 для второго элемента вектора.
Я могу сделать это с помощью набора неэлегантных операторов if-else. Должен быть способ получше. Проще было бы показать примеры:
Я предполагаю, что функция последовательного вычитания называется serialSub.
a = c(8,4)
serialSub(a,4)
> [1] 4 4
serialSub(a,8)
> [1] 0 4
serialSub(a,9)
> [1] 0 3
serialSub(a,13)
> [1] 0 0
serialSub(a,0)
> [1] 8 4