r - 多个转移矩阵的介数中心性计算
问题描述
我对如何解决这个问题有点迷茫。
例如,我有 2 个转移概率矩阵,我想将其转换为 2 个图并保存 2 个节点的中介中心性:3110 和 110。我想将结果保存在 2 个单独的 csv 文件中。这可以使用 igraph 完成吗?
我正在处理大型数据集。如何n
使用转换矩阵读取 R 个 csv 文件(特定于文件的位置) b.)从每个转换矩阵创建一个图形;c.) 计算特定节点介数中心性
样本数据
df1<-structure(list(X1 = c(110, 111, 210, 300, 310, 390, 1110, 3110,
3240, 3290, 3310, 3727, 3811, 3819, 3830, 5190, 7241, 7330, 8210,
9000, 9130, 9380, 9390, 9960), `110` = c(0.939393939, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`111` = c(0.03030303, 0, 0, 0, 0, 0, 0, 0, 0, 0.333333333,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `210` = c(0, 0,
0.571428571, 0, 0, 0, 0.025, 0.5, 0, 0, 0, 0, 0, 0.25, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0), `300` = c(0, 0, 0.142857143,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0), `310` = c(0, 0, 0, 0, 0.666666667, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0, 0), `390` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.111111111,
0, 0, 0, 0, 0), `1110` = c(0, 0, 0.142857143, 0, 0, 0, 0.925,
0, 0, 0, 0, 0, 0, 0, 0, 0.333333333, 0, 0, 0, 0, 0, 0.1,
0, 0), `3110` = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0.333333333,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `3240` = c(0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0.1, 0, 0), `3290` = c(0.03030303, 0, 0, 0, 0, 0, 0, 0, 0,
0.333333333, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0), `3310` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.666666667, 0, 0, 0.25, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0), `3727` = c(0, 0, 0.142857143, 0,
0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0), `3811` = c(0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `3819` = c(0, 0, 0, 0,
0.166666667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0.1, 0, 0), `3830` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0.5, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `5190` = c(0,
0, 0, 0, 0, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0.666666667,
0, 0, 0, 0, 0, 0, 0, 0), `7241` = c(0, 0, 0, 0, 0.166666667,
0, 0, 0, 0, 0.333333333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0), `7330` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0, 0), `8210` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0, 0.777777778,
0, 0, 0, 0, 1), `9000` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0.111111111, 0, 0, 0, 0, 0), `9130` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0.833333333, 0, 1, 0), `9380` = c(0, 0, 0, 0, 0, 0, 0.025,
0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0.166666667, 0.7,
0, 0), `9390` = c(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `9960` = c(0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0)), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -24L), spec = structure(list(cols = list(
X1 = structure(list(), class = c("collector_double", "collector"
)), `110` = structure(list(), class = c("collector_double",
"collector")), `111` = structure(list(), class = c("collector_double",
"collector")), `210` = structure(list(), class = c("collector_double",
"collector")), `300` = structure(list(), class = c("collector_double",
"collector")), `310` = structure(list(), class = c("collector_double",
"collector")), `390` = structure(list(), class = c("collector_double",
"collector")), `1110` = structure(list(), class = c("collector_double",
"collector")), `3110` = structure(list(), class = c("collector_double",
"collector")), `3240` = structure(list(), class = c("collector_double",
"collector")), `3290` = structure(list(), class = c("collector_double",
"collector")), `3310` = structure(list(), class = c("collector_double",
"collector")), `3727` = structure(list(), class = c("collector_double",
"collector")), `3811` = structure(list(), class = c("collector_double",
"collector")), `3819` = structure(list(), class = c("collector_double",
"collector")), `3830` = structure(list(), class = c("collector_double",
"collector")), `5190` = structure(list(), class = c("collector_double",
"collector")), `7241` = structure(list(), class = c("collector_double",
"collector")), `7330` = structure(list(), class = c("collector_double",
"collector")), `8210` = structure(list(), class = c("collector_double",
"collector")), `9000` = structure(list(), class = c("collector_double",
"collector")), `9130` = structure(list(), class = c("collector_double",
"collector")), `9380` = structure(list(), class = c("collector_double",
"collector")), `9390` = structure(list(), class = c("collector_double",
"collector")), `9960` = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1L), class = "col_spec"))
df2<-structure(list(X1 = c(110, 210, 310, 1110, 3110, 5310, 8210,
9120, 9390), `110` = c(0.970588235, 0, 0, 0, 0, 0, 0.125, 0,
0), `210` = c(0, 0.5, 0, 0, 0.666666667, 0, 0, 0, 0), `310` = c(0.029411765,
0.25, 0.6, 0, 0, 0, 0, 0, 0), `1110` = c(0, 0, 0, 0.981481481,
0, 0, 0, 0.25, 0), `3110` = c(0, 0, 0, 0, 0.333333333, 0.25,
0, 0, 0.037037037), `5310` = c(0, 0, 0, 0, 0, 0.75, 0, 0, 0.037037037
), `8210` = c(0, 0, 0.2, 0, 0, 0, 0.875, 0, 0), `9120` = c(0,
0.25, 0, 0, 0, 0, 0, 0.75, 0), `9390` = c(0, 0, 0.2, 0.018518519,
0, 0, 0, 0, 0.925925926)), class = c("spec_tbl_df", "tbl_df",
"tbl", "data.frame"), row.names = c(NA, -9L), spec = structure(list(
cols = list(X1 = structure(list(), class = c("collector_double",
"collector")), `110` = structure(list(), class = c("collector_double",
"collector")), `210` = structure(list(), class = c("collector_double",
"collector")), `310` = structure(list(), class = c("collector_double",
"collector")), `1110` = structure(list(), class = c("collector_double",
"collector")), `3110` = structure(list(), class = c("collector_double",
"collector")), `5310` = structure(list(), class = c("collector_double",
"collector")), `8210` = structure(list(), class = c("collector_double",
"collector")), `9120` = structure(list(), class = c("collector_double",
"collector")), `9390` = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1L), class = "col_spec"))
解决方案
你在追求这个吗?
> g1 <- graph_from_adjacency_matrix(as.matrix(df1[-1]), weighted = TRUE)
> g2 <- graph_from_adjacency_matrix(as.matrix(df2[-1]), weighted = TRUE)
> v <- c("3110", "110")
> betweenness(g1, v)
3110 110
64 22
> betweenness(g2, v)
3110 110
31 7
更新
如果您想保存到单独的文件中,也许您可以尝试
v <- c("3110", "110")
g <- list(g1,g2)
for (i in seq_along(g)) {
write.csv(between(g[[i]],v),file = paste0("g_",i,".csv"))
}
推荐阅读
- java - Hibernate JPA 填充瞬态或公式字段
- c++ - 是否有必要为几乎什么都不做的函数编写 noexcept ?
- r - 如何在不使用 as_tbl_graph() 的情况下创建相同的结果?
- ios - 免除屏幕混合的阴影
- docker - 共享 dockerfiles 层
- python - 通过 Spark 从 JDBC 推断的十进制精度
- python - 当有人说某个词(两个词)时,不和谐机器人机器人 relpys
- angular - 在 Angular 中使用延迟加载时,在此服务器上找不到请求的 URL
- html - 面对 css @media 查询的一些问题
- c++ - 如何在 linux 中使用 boost 库