将函数的连续值存储到向量中?

时间:2015-09-15 00:38:28

标签: r function loops vector

我一直在搞乱学习功能来计算作业答案(在这种情况下是货币的现值),而且我遇到了一些问题。

以下是代码:

pv <- function(x,y,z) {
   list2 <- 0
   ans <- 0
   for(t in z){
     fv <- x
     d <- y
     rate <- (1+d)^t
     ans[t] <- fv/rate
   }
   return(ans)
 }

要计算当前值,我想将函数应用于一个年份范围内的一个值(比如z = 1:10),并将每年的值存储在向量中。我的工作原理,但这种策略在其他应用程序中崩溃了。例如,当我想输入一个值向量(我有另一个函数,我通过函数运行ans向量)一段时间后,我很难找到一个可用的向量。

2 个答案:

答案 0 :(得分:0)

pv = function(fv, d, t)
  fv/(1+d)^t

pv(1.05^2, 0.05, c(1, 2))

这是一个解释。基本上,在R中,代数函数自动应用于数字数据,因此通常不需要循环。

答案 1 :(得分:0)

我必须在for循环中进行更改,然后使用mapply

 pv <- function(x,y,z) {
       list2 <- 0
       ans <- 0
       for(t in 1:z){ # changed from t in z
         fv <- x
         d <- y
         rate <- (1+d)^t
         ans[t] <- fv/rate
       }

   return(ans)
 }

mapply(pv, c(1000, 1200, 1500, 5600), c(.05, .02, .03, .09), 5)

输出:

        [,1]     [,2]     [,3]     [,4]
[1,] 952.3810 1176.471 1456.311 5137.615
[2,] 907.0295 1153.403 1413.894 4713.408
[3,] 863.8376 1130.787 1372.712 4324.227
[4,] 822.7025 1108.615 1332.731 3967.181
[5,] 783.5262 1086.877 1293.913 3639.616

每行包含一段时间内x的每个值的当前值,即第1行是第1个时段的当前值。如果您只想要讨论所有值的第5个周期:

mapply(pv, c(1000, 1200, 1500, 5600), c(.05, .02, .03, .09), 5)[5,]