【问题标题】:Matrix with for loop in RR中带有for循环的矩阵
【发布时间】:2018-07-14 09:56:41
【问题描述】:

我在 R 中有以下代码

    M <- matrix(NA, nrow = length(27:45), ncol = 2)
colnames(M) <- c("Age", "Whole Life Insurance Benefits")
i<-1
for (i in seq(27, 45, by=1)) {
  M[i,1]<- i
  M[i,2]<- Axn(actuarialtable = lc.lifetable, x=i)
  i<-i+1
}
M

当我运行它时出现错误subscript out of bounds 但是如果我更改nrow=length(0:45) 它运行没有错误,但我的矩阵中有很多 NA。你能告诉我有什么问题吗?

谢谢

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    您的代码中有 2 个问题:

    1.nrow=length(27:45) 您只有 19 行,但您的序列在 if函数从不存在的27开始 在你的矩阵中,你必须从 1 开始。

    2. 当你使用 if 函数时,如果你插入 i&lt;-i+1 在你的循环中,计数器 按 2 求和,也可以使用 1:19 代替 seq(1,19,by=1)

    这是正确而简单的代码:

    M <- matrix(NA, nrow = length(27:45), ncol = 2)
    colnames(M) <- c("Age", "Whole Life Insurance Benefits")
    i<-1
    for (i in 1:length(27:45)) {
      M[i,1]<- i
      M[i,2]<- Axn(actuarialtable = lc.lifetable, x=i)
    }
    M
    

    【讨论】:

    • 其实序列是从1开始的,如果我需要从27开始呢?
    • 在这种情况下,您必须创建超过 27 行的矩阵,然后在“if”函数中设置为 27:您的行数。别忘了点赞!天呐! @user183722
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多