Умножающиеся элементы вектора, каждый раз по одному - PullRequest
1 голос
/ 10 апреля 2019

Я пытаюсь создать вектор из другого вектора, в котором я каждый раз умножаю числа в векторе.

Например, если бы у меня было (1,2,3), новый вектор был бы (1, 1 x 2, 1 x 2 x 3) = (1,2,6)

Я попытался создать цикл для этого, как показано ниже. Кажется, работает для целых чисел, но не десятичных. Я не уверен почему.

x <- c(0.99,0.98,0.97,0.96,0.95)
for(i in 1:5){x[i]=prod(x[1:i])}

Результат равен 0,9900000 0,9702000 0,9316831 0,8590845 0,7303385

, что неверно как prod(x) = 0,8582777. Что не совпадает с последним элементом вектора.

Кто-нибудь знает, почему это так? Или предложите улучшить мой код, чтобы получить правильный ответ.

1 Ответ

4 голосов
/ 10 апреля 2019
test<-c(1,2,3)
cumprod(test)
[1] 1 2 6

Как предполагает @akrun, можно достичь того же с помощью:

Reduce("*", test, accumulate = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...