What happens, and what did you expect instead?
The internal functions get.adjacency.dense() and get.adjacency.sparse() return different results for weighted multigraphs. get.adjacency.sparse() aggregates weights for multi edges and get.adjacency.dense() reports the weight of the last edge. In my opinion, the behavior of get.adjacency.sparse() is correct. The PR #1518 coincidentally fixes this.
Given this is indeed a bug, then the following test should be fixed either in a new PR or the existing PR #1518 (see also the discussion there)
|
expect_equal( |
|
weight_adj_matrix, |
|
matrix( |
|
c(0, 3.4, 0, 0, 1.2, 2.7, 0, 4.3, 0, 0, 6, 0, 0, 0, 0.1, 0), |
|
nrow = 4L, |
|
ncol = 4L, |
|
dimnames = list(c("a", "b", "c", "d"), c("a", "b", "c", "d")) |
|
) |
|
) |
To reproduce
igraph 2.0.3
library(igraph)
#>
#> Attaching package: 'igraph'
#> The following objects are masked from 'package:stats':
#>
#> decompose, spectrum
#> The following object is masked from 'package:base':
#>
#> union
g <- make_graph(c(1,2, 2,1, 2,2, 3,3, 3,3, 3,4, 4,2, 4,2, 4,2), directed = TRUE)
E(g)$weight <- c(1.2, 3.4, 2.7, 5.6, 6.0, 0.1, 6.1, 3.3, 4.3)
as_adjacency_matrix(g, attr = "weight", sparse = FALSE)
#> [,1] [,2] [,3] [,4]
#> [1,] 0.0 1.2 0 0.0
#> [2,] 3.4 2.7 0 0.0
#> [3,] 0.0 0.0 6 0.1
#> [4,] 0.0 4.3 0 0.0
as_adjacency_matrix(g, attr = "weight", sparse = TRUE)
#> 4 x 4 sparse Matrix of class "dgCMatrix"
#>
#> [1,] . 1.2 . .
#> [2,] 3.4 2.7 . .
#> [3,] . . 11.6 0.1
#> [4,] . 13.7 . .
Created on 2024-10-10 with reprex v2.1.1
System information
No response
What happens, and what did you expect instead?
The internal functions
get.adjacency.dense()andget.adjacency.sparse()return different results for weighted multigraphs.get.adjacency.sparse()aggregates weights for multi edges andget.adjacency.dense()reports the weight of the last edge. In my opinion, the behavior ofget.adjacency.sparse()is correct. The PR #1518 coincidentally fixes this.Given this is indeed a bug, then the following test should be fixed either in a new PR or the existing PR #1518 (see also the discussion there)
rigraph/tests/testthat/test-conversion.R
Lines 175 to 183 in 0d96334
To reproduce
igraph 2.0.3
Created on 2024-10-10 with reprex v2.1.1
System information
No response