我有一个fibo.seq函数,试图用三个参数编写一个程序:一个叫n(没有默认值(,一个叫I(没有缺省值(,还有一个叫欠款(缺省值设置为TRUE(。假定n≥3。
n个付款流F1、F2、…、Fn的现值,其中第k个付款Fk对应于斐波那契序列中的第k个数(1≤k≤n(,并且付款以规则的时间间隔发生。
每个期间的有效利率等于自变量i。例如:如果i=0.05,则每个期间的实际利率为5%。
如果arguments欠款=TRUE,则第一次付款发生在第一个周期结束时。否则,第一笔付款将立即发生。
我可以为fibonacci序列调用一个函数(例如fibo.seq(
澄清(添加于2020年10月3日(: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)
}
这段代码应该足以创建函数
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))