【问题标题】:Weird result from Inversion of matrix using Package "Matrix" with negative sign in R使用 R 中带有负号的包“Matrix”对矩阵求逆的奇怪结果
【发布时间】:2021-06-18 02:34:40
【问题描述】:

使用标准矩阵函数,通过solve()求负矩阵求逆是正常的

B <- matrix(c(2,1,1,2),nrow=2,ncol=2)
solve(-B)
           [,1]       [,2]
[1,] -0.6666667  0.3333333
[2,]  0.3333333 -0.6666667

但是在使用“Matrix”包定义矩阵时会产生相反的矩阵

C <- Matrix(c(2,1,1,2),nrow=2,ncol=2)
solve(-C)
2 x 2 Matrix of class "dsyMatrix"
           [,1]       [,2]
[1,]  0.6666667 -0.3333333
[2,] -0.3333333  0.6666667

现在solve(-C)和solve(C)一样,为什么?

【问题讨论】:

  • 鉴于 akrun 的回答,请检查您实际使用的软件包。为确保您使用的是您认为正在使用的软件包,请使用package::function_you_use(),例如reshape2::melt()
  • 能否请您在 clean R 会话中运行此代码并发布sessionInfo() 的结果?

标签: r matrix matrix-inverse


【解决方案1】:

R 4.1.0 中,它给出相同的输出

> solve(-C)
2 x 2 Matrix of class "dsyMatrix"
           [,1]       [,2]
[1,] -0.6666667  0.3333333
[2,]  0.3333333 -0.6666667
> solve(-B)
           [,1]       [,2]
[1,] -0.6666667  0.3333333
[2,]  0.3333333 -0.6666667

solve 有多个methods

showMethods(solve)

【讨论】:

    【解决方案2】:

    感谢大家提供有用的提示。我将 R 从 4.0.3 更新到 4.1.0,这样的问题就消失了。在 4.0.3 版本中,Matrix::solve(a+bM) 的结果似乎是 inv(M),其中 M 由 Matrix(data,now,ncol) 定义,与标准的小写字母 base::matrix(data,nrow,ncol) 形成对比。

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2021-02-23
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      相关资源
      最近更新 更多