【问题标题】:why my sum() function don't work for the matrix operations in R为什么我的 sum() 函数不适用于 R 中的矩阵运算
【发布时间】:2020-06-17 13:38:29
【问题描述】:

以下是我的R代码,我想要tx[1, 1] = 1*2^1 + 4*5^2 + 7*8^3tx[1, 2] = 4*5 + 7*8^2tx[1, 3] = 7*8,但它只包括7*8^3 for tx[1, 1]7*8^2 for tx[1, 2]。 tx 矩阵中的其他元素也只包括求和运算中的最后一项。那么,谁能告诉我如何纠正我的代码以获得正确的输出?提前致谢!

A <- matrix(c(1:9),ncol=3)
B <- matrix(c(2:10),ncol=3)
tx<-matrix(rep(NA,3*3),3,3)

for(j in 1:3)
{
  for(i in 1:3)

  {
    for(k in 1:3-i+1)
    {
      tx[j,i]<-sum(A[j,k+i-1]*(B[j,k+i-1])^k)
    }
  }
}

【问题讨论】:

  • 我不确定它是否会给你最终的输出,但for(k in 1:3-i+1) 应该是for(k in 1:(3-i+1))
  • 感谢您的回复,@Ronak,但答案是否定的。
  • 你想要tx[j,i] &lt;- tx[j,i] + A[j,k+i-1] * (B[j,k+i-1])^k。但是用零初始化 tx,而不是 NA。 tx &lt;- matrix(rep(0, 3*3), 3, 3)
  • @Edward,非常感谢。我现在得到了正确的输出!

标签: r for-loop matrix sum


【解决方案1】:

现在它不是对每个循环的结果求和,只是保存最后一个循环的结果。试试这个:

A <- matrix(c(1:9),ncol=3)
B <- matrix(c(2:10),ncol=3)
tx<-matrix(rep(0,3*3),3,3)

for(j in 1:3)
{
  for(i in 1:3)

  {
    for(k in 1:3-i+1)
    {
      tx[j,i]<-tx[j,i] + (A[j,k+i-1]*(B[j,k+i-1])^k)
    }
  }
}

我将 tx 矩阵初始化为从 0 开始,并将每个循环的结果添加到现有总数中,以便它在每个循环中递增。

【讨论】:

  • 是的,谢谢@ryelv,你的答案和爱德华一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多