2014-06-06 63 views
1

我有一个大的稀疏矩阵R中分析例如:提取稀疏行r中

i <- c(1,3:8); j <- c(2,9,6:10); x <- 7 * (1:7) 
(A <- sparseMatrix(i, j, x = x)) 
[1,] . 7 . . . . . . . . 
[2,] . . . . . . . . . . 
[3,] . . . . . . . . 14 . 
[4,] . . . . . 21 . . . . 
[5,] . . . . . . 28 . . . 
[6,] . . . . . . . 35 . . 
[7,] . . . . . . . . 42 . 
[8,] . . . . . . . . . 49 

我想从这个矩阵中提取行,第一个稀疏向量。 如果我写

(x=A[1,]) 

我获得

[1] 0 7 0 0 0 0 0 0 0 0 

但我想是

[1] . 7 . . . . . . . . 

我想到的是,新的载体不兑现的零。我怎样才能做到这一点?

感谢

回答

2

您可以使用drop = FALSE

A[1, , drop = FALSE] 
# 1 x 10 sparse Matrix of class "dgCMatrix" 
#       
# [1,] . 7 . . . . . . . . 
+0

谢谢您的建议。我可以问你另一个问题吗?当我得到这一行时,x = A [1,,drop = FALSE],我需要执行其外部乘积p = x%o%x,但是p仍然是一个密集矩阵...是否有任何命令来设置R中的“稀疏环境”? – user3714759

+0

@ user3714759你可以试试'library(Matrix);矩阵(x%o%x,sparse = TRUE)'。 ''%o%''函数返回一个“正常”矩阵。 –

+0

再次感谢您,我会尽力的 – user3714759