在R中实现MCL(马尔可夫聚类算法)用于图形数据

时间:2017-10-25 06:24:05

标签: r graph data-visualization graph-theory mcl

我试图在R中使用马尔可夫聚类算法聚类图数据集。 我已经关注了很多教程,包括

thisthis以及其他许多人。

我的数据集如下所示:

   V1 V2 V3
1   0  1  1
2   0  2  1
3   1  2  1
4   2  3  2
5   2  4  2
6   2  5  3
7   3  6  4
8   3  7  5
9   3  8  5
10  4  9  6
11  4 10  4
12  4 11  5
13  4 12  7
14  4 13  4

V1和V2是节点,V3是连接的权重。

每个教程都提到创建一个相邻的矩阵。当我尝试他们的代码时,它总是抛出错误。 我假设这是由于列和行的不同参数造成的。但没有什么是真的有道理。

即使创建相邻矩阵也具有挑战性,更不用说实施MCL了。

有什么想法吗?我在这里缺少什么?

更新:

这是我尝试的代码:

 df <- read.table(header=T, stringsAsFactors=F, text="     V1      V2     V3
 1   0  1  1
    2   0  2  1
    3   1  2  1
    4   2  3  2
    5   2  4  2
    6   2  5  3
    7   3  6  4
    8   3  7  5
    9   3  8  5
    10  4  9  6
    11  4 10  4
    12  4 11  5
    13  4 12  7
    14  4 13  4")

包括library reshape2:

require(reshape2)

现在使用reshape将其转换为相邻的表:

m <- as.matrix(dcast(df, V1 ~ V2, value.var = "V3", fill=0))

我正在关注this教程。但是在

结束时
m <- as.matrix(dcast(df, V1 ~ V2, value.var = "V3", fill=0)), 

教程中还有另一个参数[,2:3]。本教程使用方形矩阵开始。当我尝试运行下一个命令时:

row.names(m) <- colnames(m)

它会抛出错误显示:

Error in dimnames(x) <- dn : 

length of 'dimnames' [1] not equal to array extent

0 个答案:

没有答案