我想将一个值(first.value)与一个百分比下降值(decline.vector)的矢量相减(即相乘),其中第一个值与起始百分比下降值相抵,然后该输出值就是相对于第二个百分比下降值下降了,依此类推。我认为在R中有一种比编写for循环来重新分配新值并cbind创建新向量更优雅的方法,但是我仍然是一个新手。
下降向量不是下面的序列,这只是一个例子。 虽然可以对“ by =”是向量的位置进行排序吗?我在?seq中没有发现任何暗示可能的东西。
特此:
Project 1
所需的输出:
<dependency>
<groupId>com.main.sub</groupId>
<artifactId>project2-artId</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
答案 0 :(得分:2)
您可以使用基本R中的Reduce
功能来实现
first.value <- 100
decline.vector <- c(0.85, 0.9, 0.925, 0.95, 0.975)
Reduce(`*`, decline.vector, first.value, accumulate = TRUE)
# [1] 100.00000 85.00000 76.50000 70.76250 67.22437 65.54377
答案 1 :(得分:2)
您也可以使用cumprod
first.value * cumprod(c(1, decline.vector))
# [1] 100.00000 85.00000 76.50000 70.76250 67.22438 65.54377
如果您不希望first.value
成为输出的第一个元素,请这样做
first.value * cumprod(decline.vector)
# [1] 85.00000 76.50000 70.76250 67.22438 65.54377