gpt4 book ai didi

r - 一个边列表 R 的多个邻接矩阵

转载 作者:行者123 更新时间:2023-12-02 16:18:26 25 4
gpt4 key购买 nike

我有以下边列表,其中包含将边与路径编号相关联的数字。这是由以下矩阵给出的,我将其称为Totallist:`

Begin edge  end edge  path number
1 3 1
3 4 1
4 5 1
6 3 2
3 2 2`

我想为每条路径构建邻接矩阵。在此示例中,我想要两个矩阵,但也可以有更多。我编写了以下内容,但它只找到第一条路径的矩阵。我不确定如何编写适用于我抛出的任意数量路径的东西:

 X<-as.data.frame(table(Totallist[,3]))

nlines<-nrow(X)
nlines
freq<-X[1,2]

diameterofmatrix<-max(Totallist)

X1<-get.adjacency(graph.edgelist(as.matrix(Totallist[1:X[1,2],1:2]), directed=FALSE))
X1<-rbind(X1, 0)
X1<-cbind(X1, 0)
X1

我还需要矩阵都具有相同的维度,这就是我添加额外的行和列的原因。我可以继续使用我的方法,但它看起来很丑陋。非常感谢您的帮助。

最佳答案

要将邻接矩阵提取到列表中,您可以执行以下操作(我生成一些假数据):

set.seed(42)
df <- data.frame(beginEdge = sample(1:10, 10, replace = TRUE),
endEdge = sample(1:10, 10, replace=TRUE),
pathNum = rep(c(1,2), each=5))
df

beginEdge endEdge pathNum
1 10 5 1
2 10 8 1
3 3 10 1
4 9 3 1
5 7 5 1
6 6 10 2
7 8 10 2
8 2 2 2
9 7 5 2
10 8 6 2


paths <- unique(df$pathNum) # get the paths to iterate through

如果我们创建节点因子,并将因子水平设置为群体中的所有节点,则将为网络中的群体计算邻接矩阵。我假设这里的网络有十个 Actor 。如果您观察到的数据包含您想要使用的所有节点,请将级别设置为unique(c(df$beginEdge,df$endEdge)),或您喜欢的任何节点集。

df$beginEdge <- factor(df$beginEdge, levels=1:10) 
df$endEdge <- factor(df$endEdge, levels=1:10)

我们现在遍历路径列表并创建矩阵将它们存储为列表:

  list.of.adj.mats <- lapply(paths, function(i){
matrix(as.numeric((
table(df$beginEdge[df$pathNum==i],
df$endEdge[df$pathNum==i])+
table(df$endEdge[df$pathNum==i],
df$beginEdge[df$pathNum==i]))>0),
nrow=length(levels(df$beginEdge)))})
list.of.adj.mats
[[1]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 0 0 0 0 0 0 0 0
[2,] 0 0 0 0 0 0 0 0 0 0
[3,] 0 0 0 0 0 0 0 0 1 1
[4,] 0 0 0 0 0 0 0 0 0 0
[5,] 0 0 0 0 0 0 1 0 0 1
[6,] 0 0 0 0 0 0 0 0 0 0
[7,] 0 0 0 0 1 0 0 0 0 0
[8,] 0 0 0 0 0 0 0 0 0 1
[9,] 0 0 1 0 0 0 0 0 0 0
[10,] 0 0 1 0 1 0 0 1 0 0

[[2]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 0 0 0 0 0 0 0 0
[2,] 0 1 0 0 0 0 0 0 0 0
[3,] 0 0 0 0 0 0 0 0 0 0
[4,] 0 0 0 0 0 0 0 0 0 0
[5,] 0 0 0 0 0 0 1 0 0 0
[6,] 0 0 0 0 0 0 0 1 0 1
[7,] 0 0 0 0 1 0 0 0 0 0
[8,] 0 0 0 0 0 1 0 0 0 1
[9,] 0 0 0 0 0 0 0 0 0 0
[10,] 0 0 0 0 0 1 0 1 0 0

关于r - 一个边列表 R 的多个邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com