使用R

时间:2017-01-19 18:24:30

标签: r matrix sparse-matrix

我有一个如下所示的矩阵:

A=matrix(c(1,2,0,3,4,0,0,0,0),nrow=3,ncol=3,byrow=TRUE)

在此矩阵中,行和列名称相同。每个行/列名称对应一个引用另一个的作者。第3行和第3列为零。如何通过删除孤立的作者来收缩矩阵既不引用也不引用任何人?换句话说,我该如何删除相交的第n列。

tm(文本挖掘)库中,我可以使用removeSparseTerms在文档术语矩阵上完成。

2 个答案:

答案 0 :(得分:1)

在基础R中使用colSumsrowSums[,可以使用

完成
A[rowSums(A) > 0, colSums(A) > 0]
     [,1] [,2]
[1,]    1    2
[2,]    3    4

这将删除任何行或任何零列(没有引用,没有引用)。

但是,如果矩阵是方形的,并且希望删除列和行都为零的实例,则可以使用

keepem <- rowSums(A) > 0 | colSums(A) > 0
A[keepem, keepem]

答案 1 :(得分:1)

如果您想存储为稀疏矩阵(并且只自动存储非零项目),那么您可以执行以下操作:

library(Matrix)
A <- as(A, "sparseMatrix")
A 
# 3 x 3 sparse Matrix of class "dgCMatrix"
# [1,] 1 2 .
# [2,] 3 4 .
# [3,] . . .