r - 将不是 Square 加权邻接矩阵转换为 R 中的 igraph 对象

标签 r matrix

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

所以我正在使用这个 ig <- graph.adjacency(tf_idf,mode="undirected",weighted=TRUE) .我希望对其进行加权,即它的 tf_idf 值。

但是,当我这样做时,它会抛出错误,

graph.adjacency.dense 中的错误(adjmatrix,mode = mode,weighted = 加权,:不是方阵

您能帮我决定如何继续吗?

我有类似这样的矩阵,其中 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

最佳答案

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

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

关于r - 将不是 Square 加权邻接矩阵转换为 R 中的 igraph 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46056149/

相关文章:

opencv - 无法将4个数字加到mat opencv

C++ 分配仅具有已知列和未知行的矩阵时出现问题

r - 为什么 mean() 和 mean(aggregate()) 返回不同的结果?

r - 带有两个 data.tables 的类似合并的场景

r - 如何从R中的列表中过滤出原子向量?

r - 使用 tapply 按组对多列求和

java - 如何在计算大量矩阵时使用内存

写入二进制文件的字符矩阵

matrix - 如何撤消矩阵上的旋转

r - 有效地求和R中的多个列