Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 我想把前向星表示转换成关联矩阵_R_Graph - Fatal编程技术网

R 我想把前向星表示转换成关联矩阵

R 我想把前向星表示转换成关联矩阵,r,graph,R,Graph,我有一个前向星表示,我想转换为关联矩阵,我写的代码,但它给了我错误的答案 FS <- data.frame( archsNo = c(1:12), snode = c(1,1,2,2,3,3,4,4,5,5,6,8), enode = c(2,4,4,5,2,5,6,7,7,8,7,7)) print(FS) 这就是我所尝试的: n = 8 #number of nodes m = 12 #number of archs incidence <- mat

我有一个前向星表示,我想转换为关联矩阵,我写的代码,但它给了我错误的答案

FS <- data.frame(
    archsNo = c(1:12),
    snode = c(1,1,2,2,3,3,4,4,5,5,6,8),
    enode = c(2,4,4,5,2,5,6,7,7,8,7,7)) 
print(FS)
这就是我所尝试的:

n = 8 #number of nodes 
m = 12 #number of archs
incidence <- matrix(0L,nrow=n, ncol=m)
for(row in 1:n)
{
  for(col in 1:m)
  {
   incidence[row][col] = ifelse(row == snode[col],1,ifelse(row == enode[col],-1,0)) 
   row 
   snode[col]
   enode[col]

  }
}
incidence

对于每个单元格,如果行中的节点是起始节点,那么它应该包含1;如果是结束节点,那么单元格应该包含-1,否则应该包含0,但这并没有发生。如果不使用
[row][col]
对R中的数组进行索引,则应该使用
[row,col]
。但这里有一种替代方法,可以轻松地填充矩阵,而无需循环

nodes <- max(FS$snode, FS$enode)

mm <- matrix(0, nrow=nodes, ncol=nrow(FS))
mm[cbind(FS$snode, FS$archsNo)] <- 1
mm[cbind(FS$enode, FS$archsNo)] <- -1
mm

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
# [1,]    1    1    0    0    0    0    0    0    0     0     0     0
# [2,]   -1    0    1    1   -1    0    0    0    0     0     0     0
# [3,]    0    0    0    0    1    1    0    0    0     0     0     0
# [4,]    0   -1   -1    0    0    0    1    1    0     0     0     0
# [5,]    0    0    0   -1    0   -1    0    0    1     1     0     0
# [6,]    0    0    0    0    0    0   -1    0    0     0     1     0
# [7,]    0    0    0    0    0    0    0   -1   -1     0    -1    -1
# [8,]    0    0    0    0    0    0    0    0    0    -1     0     1
节点
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    1    0    0    0    0    0    0    0    0     0     0     0
[2,]   -1    0    0    0    0    0    0    0    0     0     0     0
[3,]    0    0    0    0    0    0    0    0    0     0     0     0
[4,]    0    0    0    0    0    0    0    0    0     0     0     0
[5,]    0    0    0    0    0    0    0    0    0     0     0     0
[6,]    0    0    0    0    0    0    0    0    0     0     0     0
[7,]    0    0    0    0    0    0    0    0    0     0     0     0
[8,]    0    0    0    0    0    0    0    0    0     0     0     0

nodes <- max(FS$snode, FS$enode)

mm <- matrix(0, nrow=nodes, ncol=nrow(FS))
mm[cbind(FS$snode, FS$archsNo)] <- 1
mm[cbind(FS$enode, FS$archsNo)] <- -1
mm

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
# [1,]    1    1    0    0    0    0    0    0    0     0     0     0
# [2,]   -1    0    1    1   -1    0    0    0    0     0     0     0
# [3,]    0    0    0    0    1    1    0    0    0     0     0     0
# [4,]    0   -1   -1    0    0    0    1    1    0     0     0     0
# [5,]    0    0    0   -1    0   -1    0    0    1     1     0     0
# [6,]    0    0    0    0    0    0   -1    0    0     0     1     0
# [7,]    0    0    0    0    0    0    0   -1   -1     0    -1    -1
# [8,]    0    0    0    0    0    0    0    0    0    -1     0     1