不确定如何解决“数字表达式包含41个元素:仅第一个使用”的警告

山姆·韦伯

目前,尽管试图进行绘制,但试图编写函数以计算保证金收益和准备金/保单价值,但仍会出现相同的错误,并且对我的解决方法颇为迷惑。任何帮助将不胜感激。

#Annuity-due function
AnU = function(x, n, i)
{
  An = 0
  for (k in 0:(n-1))
  {
    An = An + (1/(1+i))^k*lx[x+k]/lx[x]
  }
  return(An)
}

#Term/whole life assurance function
TWa <- function(x, n, i){
  if (missing(n)) 
    n = 120 - x - 1
  Ta = 0
  for(k in 0:(n-1))
  {
      Ta = Ta + (1/(1+i))^(k+1)*(lx[x+k]-lx[x+k+1])/lx[x]
  }
    return(Ta)
}
#Setting Premium
P <- 100000*TWa(x = 25, n = 40, i = 0.04)/AnU(x = 25, n = 40, i = 0.04)

#Policy value function
age <- c(1:120)
term <- c(1:120)
time <- c(1:120)
policy_TW <- function(time, age, term, rate)
  return(100000*TWa(x = age + time, n = term - time, i = rate) -
    P * AnU(x = age + time, n = term - time, i = rate))
for (time in 0:40)
  cat("At time", time, " policy value is ", policy_TW(time, 25, 40, 0.04), "\n")

#Plot
plot(0:40, policy_TW(0:40, 25, 40, 0.04), ylim = c(0,6000), type = "b")

> plot(0:40, policy_TW(0:40, 25, 40, 0.04), ylim = c(0,6000), type = "b")
Warning messages:
1: In 0:(n - 1) :
  numerical expression has 41 elements: only the first used
2: In 0:(n - 1) :
  numerical expression has 41 elements: only the first used

编辑:为了重现性,我忘记添加lx代码。这是从链接的xls文件计算出来的,该文件随后被命名为data https://www.actuaries.org.uk/documents/am92-permanent-assurances-males

# Calculate the values for lx
qx = c(rep(NA,16),data$qx)
lx = vector()
lx[1:17] = c(rep(NA,16),10000)
for (i in 18:120)
{
  lx[i]=lx[i-1]*(1-qx[i-1])
}
qdread

该语法0:(n-1)创建一个序列,即一个从零到的整数整数n-1但是,您n本身就是一个向量,因为它被定义为term - time并且time是所有0到40的整数的向量(因此它包含41个元素)。因此,仅使用的第一个元素n来创建序列。例如,如果nc(4,5,10),则仅使用4,而忽略5和10,然后0:(n-1)返回c(0,1,2,3)

您将需要重新定义AnU()TWa()功能。我不知道正是你需要什么,但我想你只需更换线路for (k in 0:(n-1))for (k in 0:(max(n)-1))我想测试一下,但由于lx您的代码中未定义对象,而这两个函数的公式中都没有定义,因此我无法重现您的错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数值表达式有 x 个元素:仅第一个使用

来自分类Dev

如何使用正则表达式匹配直到第一个(元素)?

来自分类Dev

正则表达式提取(仅)第一个数字值

来自分类Dev

Notepad ++正则表达式仅使用第一个数字替换$ 1

来自分类Dev

简单示例:仅允许将表达式作为管道的第一个元素

来自分类Dev

Powershell-“仅允许将表达式作为管道的第一个元素”

来自分类Dev

简单示例:仅允许将表达式作为管道的第一个元素

来自分类Dev

如何使此正则表达式仅找到第一个匹配项

来自分类Dev

如何只匹配正则表达式中的第一个数字

来自分类Dev

已解决的Java:通过lambda表达式查找第一个数字最不同的数字

来自分类Dev

基本的PowerShell脚本问题:“仅允许将表达式作为管道的第一个元素”

来自分类Dev

如何仅读取文件的第一个表达式并移至另一行

来自分类Dev

一个数字和句点后的第一个数字的正则表达式

来自分类Dev

如何仅获得正则表达式Grok过滤器的第一个匹配项

来自分类Dev

如何仅替换python中正则表达式中的第一个单词

来自分类Dev

正则表达式PHP仅获得第一个匹配项

来自分类Dev

python正则表达式仅匹配第一个实例

来自分类Dev

正则表达式仅返回第一个匹配项

来自分类Dev

正则表达式:仅匹配值的第一个实例

来自分类Dev

正则表达式提取(仅)第一个数值

来自分类Dev

Javascript正则表达式仅替换第一个匹配项

来自分类Dev

正则表达式仅捕获第一个匹配项

来自分类Dev

仅匹配正则表达式行中的第一个匹配项

来自分类Dev

正则表达式仅扫描返回第一个值

来自分类Dev

正则表达式:仅匹配值的第一个实例

来自分类Dev

正则表达式匹配器仅返回第一个结果

来自分类Dev

在 JavaScript 中仅使用正则表达式选择第一个破折号

来自分类Dev

在正则表达式中,如何删除第一个数字,后跟逗号?

来自分类Dev

通过lambda表达式查找数字最不同的第一个

Related 相关文章

  1. 1

    数值表达式有 x 个元素:仅第一个使用

  2. 2

    如何使用正则表达式匹配直到第一个(元素)?

  3. 3

    正则表达式提取(仅)第一个数字值

  4. 4

    Notepad ++正则表达式仅使用第一个数字替换$ 1

  5. 5

    简单示例:仅允许将表达式作为管道的第一个元素

  6. 6

    Powershell-“仅允许将表达式作为管道的第一个元素”

  7. 7

    简单示例:仅允许将表达式作为管道的第一个元素

  8. 8

    如何使此正则表达式仅找到第一个匹配项

  9. 9

    如何只匹配正则表达式中的第一个数字

  10. 10

    已解决的Java:通过lambda表达式查找第一个数字最不同的数字

  11. 11

    基本的PowerShell脚本问题:“仅允许将表达式作为管道的第一个元素”

  12. 12

    如何仅读取文件的第一个表达式并移至另一行

  13. 13

    一个数字和句点后的第一个数字的正则表达式

  14. 14

    如何仅获得正则表达式Grok过滤器的第一个匹配项

  15. 15

    如何仅替换python中正则表达式中的第一个单词

  16. 16

    正则表达式PHP仅获得第一个匹配项

  17. 17

    python正则表达式仅匹配第一个实例

  18. 18

    正则表达式仅返回第一个匹配项

  19. 19

    正则表达式:仅匹配值的第一个实例

  20. 20

    正则表达式提取(仅)第一个数值

  21. 21

    Javascript正则表达式仅替换第一个匹配项

  22. 22

    正则表达式仅捕获第一个匹配项

  23. 23

    仅匹配正则表达式行中的第一个匹配项

  24. 24

    正则表达式仅扫描返回第一个值

  25. 25

    正则表达式:仅匹配值的第一个实例

  26. 26

    正则表达式匹配器仅返回第一个结果

  27. 27

    在 JavaScript 中仅使用正则表达式选择第一个破折号

  28. 28

    在正则表达式中,如何删除第一个数字,后跟逗号?

  29. 29

    通过lambda表达式查找数字最不同的第一个

热门标签

归档