我试图从另一个向量创建一个向量,在该向量中,我每次将向量中的数字再相乘一次。
例如,如果我有(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是错误的。与向量的最后一个元素不同。
有人知道为什么会这样吗?或对我的代码进行改进以获取正确答案的建议。
答案 0 :(得分:4)
test<-c(1,2,3)
cumprod(test)
[1] 1 2 6
正如@akrun所建议的,可以通过以下方式实现相同的目的:
Reduce("*", test, accumulate = TRUE)