我需要一个循环来重复计算变量,并考虑 0.0 和 2.0 之间的所有分辨率级别。然后构建一个曲线图,显示哪个值最主要,无论使用什么分辨率。
library(igraph)
###DADOSEXEMPLO##
valores <- c(1, 5, 3, 8, 2, 9, 3, 2, 3 ,2, 5, 3, 6, 5, 1, 5, 3, 4, 2, 2, 5, 6, 5, 7, 1, 2,
8, 12, 5, 1, 5, 3, 6, 5, 9, 3,3,4,5,7,8,2,7,8,4,3,1,4,4 )
matrixnet <- matrix(valores, 7, 7)
matcor <- cor(matrixnet, method = "spearman")
cor_pequena <- 0.1
matcor[] <- ifelse(matcor < cor_pequena, 0, matcor)
matrixnetwork = graph.adjacency(matcor, mode = "undirected",
weighted = TRUE,
add.colnames = NULL, diag = FALSE)
plot(matrixnetwork)
我想在分辨率参数内计算这个变量,从值 0.0 到 2.0,考虑每个点的值 0.01 到 0.01
这是函数,这里我有分辨率(我需要更改值)
louvain <- cluster_louvain(matrixnetwork, weights = NULL, resolution = 0.87)
orig_memb_louvain <- membership(louvain)
mod_louvain <- modularity(matrixnetwork, orig_memb_louvain,weights = NULL, resolution = 0.87)
我尝试了这个公式,但它不会改变分辨率值
valores_louvain<- vector("list", length = 10)
for(i in seq.int(10)) {
valores_louvain[[i]] <- cluster_louvain(matrixnetwork, weights = NULL, resolution = i + 0.01)
}
在我想要构建图表之后,绘制分辨率参数每次变化所产生的值的曲线,以查看最突出的值。
PS:cluster_louvain 返回 2 个答案组:1,mod:0.13
这个?
clv <- cluster_louvain(matrixnetwork, weights = NULL)
plot(clv, matrixnetwork)
# from 0 to 2 step = 0.01
valores_louvain <- c()
for(i in seq(from=0, to= 2, by=0.01)) {
clv <- cluster_louvain(matrixnetwork, weights = NULL, resolution = i)
valores_louvain[length(valores_louvain) + 1] <- tail(clv$modularity, 1)
}
dev.new(); plot(valores_louvain)