在r中使用矩阵

在r中使用矩阵,r,matrix,R,Matrix,我正在编写代码来构建期权定价矩阵。我现在得到的是沿矩阵对角线部分的值。目前我在一个4行4列的矩阵中工作。我试图做的是使用矩阵对角线部分的值,给出矩阵下三角的值。因此,对于我的矩阵Omat,Omat[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

我正在编写代码来构建期权定价矩阵。我现在得到的是沿矩阵对角线部分的值。目前我在一个4行4列的矩阵中工作。我试图做的是使用矩阵对角线部分的值,给出矩阵下三角的值。因此,对于我的矩阵
Omat
Omat[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行4列矩阵:

Omat
# 2   0   0   0
# 0   2   0   0
# 0   0   2   0
# 0   0   0   2 
 0 0 0 0
 4 0 0 0
 8 4 0 0
16 8 4 0

我可能遗漏了什么,但为什么不这样做:

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
for(2:dim中的i){
对于(j in 1:(i-1)){

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

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
Omat=diag(2,4)
对于(i/1:(nrow(Omat)-1)){
对于(j英寸(i+1):nrow(Omat)){

Omat[j,j-i]根据您的描述,您提供的代码似乎有2/3或更多是不相关的。也许只需显示一个简单的矩阵,并询问如何执行最后的操作?当简化为输入和一个步骤的期望输出时,事情变得非常清楚,这给您带来了麻烦。我删减了看起来多余的内容。我认为这很好,很清楚现在,请回滚或编辑我删除的任何重要内容。嗨,大卫,谢谢你的回答。但问题是,我需要创建的值成为新值。正如你提供的代码中所示,使用矩阵的对角线为我提供值,但我希望返回这些创建的图形。所以Omat[2,1]+Omat[3,2]将为[3,1]提供一个值。嗨,沃尔特,谢谢你的帮助!我想我很快就能将其应用到我的代码中。@乔·麦克格拉斯谢谢你的反馈。如果此解决方案对你有效,你可以勾选“接受”框,以便其他用户将其识别为解决方案。