将方形加权邻接矩阵转换为R

时间:2017-09-05 13:25:37

标签: r matrix

我正在使用tf_idf值来确定网页之间的相似性。现在我的tf_idf矩阵不是正方形,因为有很多关键字但只有36个文档。我想将这个矩阵转换为图形对象,这样我就可以拿一个同样的模式投影。

所以我正在使用它     ig <- graph.adjacency(tf_idf,mode="undirected",weighted=TRUE)。我想要加权,这是它的tf_idf值。

但是,当我这样做时会引发错误,

graph.adjacency.dense出错(adjmatrix,mode = mode,加权=加权,:不是方阵

请你帮我决定如何继续。

我有像这样的矩阵,其中x,y,z是关键字,A,b是网页

mat = matrix(c(0.1, 0.5, 0.9, 0.4, 0.3, 0.5), nc=3,
           dimnames=list(c("A", "B"), c("x", "y", "z")),
           byrow=TRUE)

      x    y   z
A     0.1 0.5 0.9
B     0.4 0.3 0.5

1 个答案:

答案 0 :(得分:1)

可能有更好的方法,但如果您想将矩阵扩展为完整的邻接矩阵,可以使用以下函数:

expand.matrix <- function(A){
  m <- nrow(A)
  n <- ncol(A)
  B <- matrix(0,nrow = m, ncol = m)
  C <- matrix(0,nrow = n, ncol = n)
  cbind(rbind(B,t(A)),rbind(A,C))
}

例如:

 A <- rbind(c(0,1,0),c(1,0,1))
> A
     [,1] [,2] [,3]
[1,]    0    1    0
[2,]    1    0    1
> expand.matrix(A)
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    1    0
[2,]    0    0    1    0    1
[3,]    0    1    0    0    0
[4,]    1    0    0    0    0
[5,]    0    1    0    0    0