R 存储从函数到向量的连续值?
我一直在胡乱地学习函数来计算家庭作业的答案,在这种情况下,我遇到了一些问题 代码如下:R 存储从函数到向量的连续值?,r,function,loops,vector,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:
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向量达数年之久,我很难找到一个可用的向量
pv = function(fv, d, t)
fv/(1+d)^t
pv(1.05^2, 0.05, c(1, 2))
这里有一个解释。基本上,在R中,代数函数会自动应用于数字数据,因此循环通常是不必要的。我不得不对for循环进行更改,然后我使用了mapply: 每一行包含某一期间x的每一个值的现值,即第1行是第一个期间的现值。如果您只需要第5个句号来表示所有相关值:
mapplypv、c1000、1200、1500、5600、c.05、c.02、c.03、c.09、c.05、c.03、c.05、c.02、c.03、c.05、c.05、c.03、c.05、c.05、c.05、c.05、c.02、c.03、c.03、c.05、c.05[?您可以使用sapply来使用带有值向量的函数:sapplyvectorOfValues,pv好的,这很有意义。当我使用sapply并将值存储到向量时,它们会按顺序排列吗?我一直对sapply的用法感到困惑。是的,他们会的。sapply用于将向量的每个元素插入函数并返回结果。“s”代表简化应用。然而,sapply在这里是不正确的,因为您的函数有3个参数。您需要使用的是mapply,它适用于具有多个参数的函数。Try,mapplypv,c1000,1200,1500,5600,c.05,.02,.03,.09,5矩阵的最下面一行似乎是当前值计算不确定这是什么原因。将z中的fort更改为1:z中的fort,mapply工作正常。您将看到每个周期的迭代。@small_data88我现在明白了,谢谢!我可以把从pv函数得到的向量输入到通货膨胀函数中,很好。向量化在那里什么都不做。最初的函数pv已经矢量化了。虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
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)
}
[,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