r - 2个向量的条件分组/循环
问题描述
假设一项投资每半年提供 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 并继续这样做
帮助。谢谢
解决方案
请参阅下面的算法以了解向量子集和乘法,以及for
-loop。
请注意,您不应将百分比符号与%
, like一起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
#
推荐阅读
- python - 使用 keras 的解密器
- excel - 尝试使用宏在 Excel 中获取动态位置
- r - 使表格中的显着效果在最终的 pfd 文档中显示为粗体
- powershell - Powershell 批量重命名多个文件(将 .txt 替换为 _,txt)
- amazon-web-services - 是否可以使用 cdk 1.32 将安全组添加到 AWS 中的 Fargate 服务?
- javascript - 如何使用 Leaflet 更改每个图层上的地图标记颜色?
- python - 为什么 (3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6) = 7?
- android - Android Studio 在 MainActivity.kt 中找不到 TextView 引用(来自设计)
- excel - 在excel代码搜索功能中使用[start num]
- python - 如何将用户输入存储到字典中