我有一个如下所示的矩阵:
A=matrix(c(1,2,0,3,4,0,0,0,0),nrow=3,ncol=3,byrow=TRUE)
在此矩阵中,行和列名称相同。每个行/列名称对应一个引用另一个的作者。第3行和第3列为零。如何通过删除孤立的作者来收缩矩阵既不引用也不引用任何人?换句话说,我该如何删除相交的第n列。
在tm(文本挖掘)库中,我可以使用removeSparseTerms在文档术语矩阵上完成。
答案 0 :(得分:1)
在基础R中使用colSums
,rowSums
和[
,可以使用
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,] . . .