作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望 igraph::count_multiple()
计算边的多重性,文档似乎反射(reflect)了这一点。但是,它并不总是产生整数。
一个例子:
library(igraph)
library(dplyr)
data("USairports", package = "igraphdata")
期望:计算边数,同时对相关顶点进行分组......
(
manualish_count <- USairports %>%
igraph::as_data_frame() %>%
add_count(from, to)
) %>%
select(from, to, n)
#> # A tibble: 23,473 x 3
#> from to n
#> <chr> <chr> <int>
#> 1 BGR JFK 2
#> 2 BGR JFK 2
#> 3 BOS EWR 10
#> 4 ANC JFK 1
#> 5 JFK ANC 1
#> 6 LAS LAX 20
#> 7 MIA JFK 10
#> 8 EWR ANC 1
#> 9 BJC MIA 1
#> 10 MIA BJC 1
#> # ... with 23,463 more rows
...结果为整数; manualish_count$n
包含 <int>
埃格斯。
使用 igraph
, 乍一看似乎一切都很好......
(ig_count <- count_multiple(USairports)) %>% head(10)
#> [1] 2 2 10 1 1 20 10 1 1 1
...但实际上有分数:
ig_count[ig_count %% 1 != 0]
#> [1] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 1.5 1.5 1.5 1.5 0.5 1.5 1.5 0.5 0.5 0.5
#> [18] 0.5 1.5 1.5 1.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
#> [35] 0.5
我是不是误会了count_multiple()
的用途或使用不当?
igraph_version()
#> [1] "1.2.2"
最佳答案
这是因为 count_multiple
如何处理循环(自边)。
ig_count <- count_multiple(USairports)
x <- which(ig_count %% 1 != 0)
E(USairports)[x]
#[1] HOM->HOM FYU->FYU OME->OME ANI->ANI KLL->KLL WFB->WFB RIC->RIC DEN->DEN
#[9] BLD->BLD BLD->BLD BLD->BLD DCA->DCA DEN->DEN DEN->DEN MCI->MCI SSB->SSB
#[17] MIA->MIA KEH->KEH LKE->LKE LKE->LKE LKE->LKE LPS->LPS VGT->VGT DET->DET
#[25] CID->CID CLE->CLE JFK->JFK LGA->LGA MKE->MKE ORD->ORD PHL->PHL GRR->GRR
#[33] MEM->MEM JNU->JNU MSP->MSP
底层的 c 例程 igraph_count_multiple
明确地将边数除以 2 for 循环。
/* for loop edges, divide the result by two */
if (to == from) VECTOR(*res)[i] /= 2;
你可以通过只计算非循环的倍数来避免这种情况
ig_count2 <- count_multiple(simplify(USairports, remove.multiple = FALSE, remove.loops=TRUE))
ig_count2[1:10]
#[1] 2 2 10 1 1 20 10 1 1 1
which(ig_count2 %% 1 != 0)
#integer(0)
关于r - 关于 igraph::count_multiple() 的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011711/
我希望 igraph::count_multiple()计算边的多重性,文档似乎反射(reflect)了这一点。但是,它并不总是产生整数。 一个例子: library(igraph) library(
我是一名优秀的程序员,十分优秀!