2个向量的条件分组/循环

时间:2018-09-24 00:30:31

标签: r for-loop vector finance

假设一项投资每半年给出$ 80的优惠券,即每六个月$ 40。 6个月,12个月和18个月的利率分别为3.4%,4.9%和5.2%。 我需要将它们折现成现值。数学上,我会做

40*EXP((-.034)*(.5))+40*EXP((-.049)*(1))+40*EXP((-.052%)*(1.5))

K*EXP((r1)*(t1))+K*EXP((-r2)*(t2))+K*EXP((-r3)*(t3))

1)现在,如果支付不是半年一次,则说是每月一次,即每个月一次,或者每个季度一次,即每个季度一次,那么我该如何编码,以便在每月支付的情况下

K*EXP((r1)*(1/12))+K*EXP((-r2)*(1/6))+K*EXP((-r3)*(1/4))+ ....

或者每季度要跳过t中的每2个变量

K*EXP((-r1)*(1/4))+K*EXP((-r2)*(1/2))+K* EXP((-r3)*(3/4))

2)时间运行了一年之后,如何运行循环以将其加1,然后跳过相同数量的变量

t<- c(1/12,1/6,1/4,1/3,5/12,1/2,7/12,2/3,3/4,5/6,11/12,1)
j<- t+1 

我是否定义了另一个变量,如j并继续执行

帮助。谢谢

1 个答案:

答案 0 :(得分:0)

请参见下面的算法,进行矢量子集和乘法,以及for循环。

您不应该对%使用百分号,例如1%,而应使用0.01

t <- c(1 / 12, 1 / 6, 1 / 4, 1 / 3, 5 / 12, 1 / 2, 7 / 12, 2 / 3, 3 / 4, 5 / 6, 11 / 12, 1)
r <- range(c(1, 12) / 100)

# 1.) Pick any one or few selective values from t and multiply with all/any value in r.
# the first and the second elements of vector multiplied by all r elements
t[1:2] * r
# [1] 0.0008333333 0.0200000000

# 2.) Can I run a loop where 't' time goes beyond 1 year?
i <- 2 # number of years
total <- numeric(0)
for(i in 2:(i + 1)) {
  total <- c(total, t * i)
}

# t for 2 years
total  
# [1] 0.1666667 0.3333333 0.5000000 0.6666667 0.8333333 1.0000000 1.1666667 1.3333333 1.5000000 1.6666667 1.8333333
# [12] 2.0000000 0.2500000 0.5000000 0.7500000 1.0000000 1.2500000 1.5000000 1.7500000 2.0000000 2.2500000 2.5000000
#