2017-09-04 179 views
1

我发现函数(null或nullspace)在R中查找正则矩阵的空间,但找不到稀疏矩阵(sparseMatrix)的任何函数或包。计算稀疏矩阵的零空间

有谁知道如何做到这一点?

回答

2

如果你看看ggm::null的代码,你会发现它是基于输入矩阵的QR分解。

另一方面,Matrix程序包提供了自己的方法来计算稀疏矩阵的QR分解。

例如:

require(Matrix) 
A <- matrix(rep(0:1, 3), 3, 2) 
As <- Matrix(A, sparse = TRUE) 

qr.Q(qr(A), complete=TRUE)[, 2:3] 
qr.Q(qr(As), complete=TRUE)[, 2:3] 
+0

嗨文森特。我用你的评论,这很好。虽然矩阵和它的转置是分解的,但在稀疏情况下,当行数小于列数时,它不分解。作为矩阵(A,sparse = TRUE)和qr.Q(qr(A),complete = TRUE),可以使用以下公式来计算矩阵A和矩阵B的相关系数矩阵:A <矩阵(1:6,nc = 2,nr = 3)和 。和qr.Q(qr(A),qr.Q(qr(As),complete = TRUE)和qr.Q(qr(t(A)),complete = TRUE) ),complete = TRUE)不起作用 .local(x,...)中的错误:必须有#{rows}> =#{columns}。非常感谢。最好的 – Mahin

+0

我得到相同的错误信息。我不知道为什么它在密集矩阵上工作,但对于稀疏矩阵失败... –

+0

非常感谢您的关注。 – Mahin