稀疏QR比原始矩阵多行

时间:2012-08-09 03:07:53

标签: r matrix

我在qr中使用"Matrix"包进行了稀疏R分解

a <- Matrix(runif(20), nrow = 5, sparse = T)
a[3:5,] <- 0 #now **a** is a 5X4 matrix
b <- qr.R(qr(a), complete = T) #but now **b** is a 7X4 matrix!
谁知道为什么?请注意,如果我保持a密集,则不会出现错误(?)。

1 个答案:

答案 0 :(得分:1)

我假设你没有看到警告,否则你会提到它,对吧?

  

警告讯息:   在qr.R(qr(a),complete = T):     由于排列,qr.R(&lt; sparse&gt;)可能与qr.R(&lt; dense&gt;)不同

现在,如果你问这些排列是什么意思,那就是另一个故事......

help("sparseQR-class")页面可能包含有关此问题的更多信息:

  

然而,因为矩阵Q没有唯一定义,所以qr.qy和qr.qty的结果不一定与相应的密集矩阵计算的结果相匹配。

也许与qr.R相同?

最后,在同一帮助页面上进一步说明:

  

qr.R --- signature(qr =“sparseQR”):计算QR分解的上三角R矩阵。请注意,这会因为可能的排列与经典qr.R()结果不匹配而发出警告,您可以通过设置options()“Matrix.quiet.qr.R”或(更一般的)“Matrix”来抑制这些警告.quiet“为TRUE。