【问题标题】:Working with matrices in r在 r 中使用矩阵
【发布时间】:2015-10-08 20:03:58
【问题描述】:

我正在编写构建期权定价矩阵的代码。我现在拥有的是矩阵对角线部分的值。目前我正在使用 4 行 4 列的矩阵。我试图做的是使用矩阵对角线部分的值来给出矩阵下三角形中的值。所以对于我的矩阵OmatOmat[1,1]+Omat[2,2] 将给出[2,1] 的值,Omat[2,2]+Omat[3,3] 将给出[3,2] 的值。然后使用这些创建的值,Omat[2,1]+Omat[3,2] 将为[3,1] 提供一个值。

我的尝试:

Omat = diag(2, 4, 4)
Omat[j+i,j] <- Omat[i-1,j]+Omat[i,j+1]

关于如何解决这个问题的任何想法?

我目前拥有的,一个 4 行 x 4 列的矩阵:

Omat
# 2   0   0   0
# 0   2   0   0
# 0   0   2   0
# 0   0   0   2 

我一直在尝试创建一个 4 行乘 4 列的矩阵:

 0 0 0 0
 4 0 0 0
 8 4 0 0
16 8 4 0

【问题讨论】:

  • 根据您的描述,您提供的代码似乎有 2/3 或更多不相关。也许只是显示一个简单的矩阵并询问如何执行最后一个操作?当简化为给您带来麻烦的一步的输入和所需输出时,事情变得非常清楚。
  • 我削减了看起来像多余的东西。我认为现在很好很清楚,但是在我删除的任何重要内容中回滚或编辑。

标签: r matrix


【解决方案1】:

您可以尝试计算主对角线下方的连续对角线。代码可能如下所示:

Omat = diag(2,4)
for(i in 1:(nrow(Omat)-1)) {
  for( j in (i+1):nrow(Omat)) {
    Omat[j,j-i] <- Omat[j,j-i+1] + Omat[j-1,j-i]
  }
}
diag(Omat) <- 0

【讨论】:

  • 嗨沃尔特,感谢您的帮助!我认为我已经非常接近将其适应我的代码了。
  • @Joe McGrath 感谢您的反馈。如果此解决方案适合您,您可以勾选接受框,以便其他 SO 用户将其识别为解决方案。
【解决方案2】:

我可能错过了什么,但为什么不这样做:

for (i in 2:dim){
    for (j in 1:(i-1)){
        Omat[i,j] <- Omat[i-1,j] + Omat[i,j+1]
    }
}
diag(Omat) <- 0

,大卫。

【讨论】:

  • 嗨,大卫,感谢您的回复。但问题是我需要创建的值成为新值。正如您提供的代码中一样,使用矩阵的 diag 为我提供了值,但我希望循环回那些创建的数字。所以 Omat[2,1]+Omat[3,2] 将给出 [3,1] 的值。
猜你喜欢
  • 2015-12-09
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2014-09-03
  • 2016-10-07
  • 1970-01-01
相关资源
最近更新 更多