我正在尝试使用以下定义的函数来计算变量。
我发现是Function(0:n)和Function(0:last(age_mortality))导致了错误。但是,我的目的是让向量从0开始到n
有人知道我该如何解决吗?
解决后,会弹出一些错误和警告,我设法将其停顿下来。
age_mortality==age
=> age_mortality %in% age
:您要尝试获取在age_mortality
中找到的元素的索引age
,这可以通过第二个代码来实现,因为第一个代码将检查的元素1age_mortality
是否等于的元素1 age
,其中发出age
与长度不同的警告age_mortality
。通过查找替换全部应用更改。这使函数至少输出结果。N = length(age_mortality[index:length(age_mortality)])
导致以下警告:在index:length(age_mortality)中:数值表达式具有81个元素:仅第一个使用。
您要计算的是剩余的年数,因此我建议您使用进行更改:N = length(age_mortality) - index +1
此外,您还需要更改后面的行
ax <- sapply(1:length(index), function(i) sum( (v^(1:(N[i]-1))) * L[(index[i]+1):(length(L))] / L[index[i]] ))
如果这不是您要尝试发表的评论,我们将予以解决。
1:在AnnuityDue(age + t)-nEx(t)* AnnuityDue(age + n)中:较长的对象长度不是较短的对象长度的倍数
2:在S中*收益(0:last(age_mortality))*(1 + f)+奖励*(e *:较长的对象长度不是较短的对象长度的倍数
如果我们打印的输出Benefit
,AnnuityDue
以及nEx
功能我们可以看到什么导致它,显然有些NA
S,NAN
S和Inf
s为是什么导致了向量的长度不同。我们可以通过定义一个omit
函数来解决此问题,该函数将向量作为输入,仅返回有限且已定义的元素,即:
omit <- function(x) x[is.finite(x)]
然后在返回值之前,将每个先前函数的输出重定向到其中:
Benefit <- function(t){
### your code here
return(omit(B))
}
# same thing for the other functions stated above
现在,该代码可以正常工作,而且不会发出警告,也不确定输出是否正确:
> Insurance(age_x1=40, age_y1=NA, age_x2=NA, age_y2=NA,
+ r=4, S=1, n=25, I=0, e=0, f=0, n_guaranteed=NA,
+ PremiumPayment="single", PremiumFrequency="yearly",
+ BenefitType_x="whole life assurance", BenefitType_y=NA, BenefitType_joint=NA,
+ BenefitPayment="year end", BenefitFrequency="yearly", Policyholder="Group x")
$`PV Benefit`
[1] 0.2305597
$`PV Expenses`
[1] 0
$`PV Premium`
[1] 0.2305597
$Premium
[1] 0.2305597
$Reserve
[1] 0.000000000 0.008509399 0.017309504 0.026403962 0.035796264 0.045489822 0.055485862 0.065786354 0.076391321 0.087299629 0.098510445 0.110019422 0.121823431 0.133915583 0.146289267
[16] 0.158935859 0.171845028 0.185004428 0.198400619 0.212018291 0.225840105 0.239847703 0.254020586 0.268336638 0.282771726 0.297301263 0.311898937 0.326537415 0.341188133 0.355821656
[31] 0.370408020 0.384917092 0.399318583 0.413582476 0.427679070 0.441579072 0.455254361 0.468678022 0.481824380 0.494669926 0.507192372 0.519371971 0.531190799 0.542633303 0.553686424
[46] 0.564339674 0.574584613 0.584415520 0.593828910 0.602823466 0.611400236 0.619562371 0.627314658 0.634663662 0.641617653 0.648186080 0.654379478 0.660209598 0.665688864 0.670830245
[61] 0.675647388 0.680153925 0.684363793 0.688290888 0.691949218 0.695352424 0.698514828 0.701448744 0.704168487 0.706688199 0.709024689 0.711218119 0.713232273 0.715455505 0.717778932
[76] 0.720412393 0.730978749
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句