我正在尝试使用 R 中的马尔可夫聚类算法对图形数据集进行聚类。我已经学习了很多教程,包括
我的数据集如下所示:
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")
包括库 reshape2:
require(reshape2)
现在使用 reshape 将其转换为相邻表:
m <- as.matrix(dcast(df, V1 ~ V2, value.var = "V3", fill=0))
我正在关注本教程。但在最后
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