我有一个fibo.seq函数,并尝试编写一个带有三个参数的程序:一个称为n(无默认值),一个称为i(无默认值),一个称为欠款(默认值设置为)。真正)。假设n≥3。
n个支付流F1,F2,...,Fn的当前值,其中第k个支付Fk对应于斐波那契数列中的第k个数字(1≤k≤n),并且支付以固定的时间间隔进行。
每个期间的有效利率等于参数i。例如:如果i = 0.05,则每个期间的有效利率为5%。
如果参数arrears = TRUE,则第一次付款发生在第一个期间的末尾。否则,第一笔付款会立即发生。
我可以调用斐波那契序列的函数(例如fibo.seq)
说明(于03/10/2020添加):fibo.PV必须返回付款的总现值(即一个数字)。
我们可以使用年金吗?
fibo.PV <- function(n, i, arrears=TRUE) {
if (arrears) {
PV <- numeric(n)
PV <- annuity(i=0.05, n=5, type="immediately")
} else {
PV <- annuity(i=0.06/12, n=5*12)
}
return(PV)
}
答案 0 :(得分:0)
此代码足以创建函数
library(tidyverse)
i <- .05
# Data frame with cash flows
df <- tibble(
fibo = fibo.seq(length) ) %>%
mutate(index = row_number(),
flow = fibo/(1+i)^(index))
# calculate PV
df %>%
summarise(pv = sum(flow, na.rm = TRUE))