获取R中的连接组件

用户名

我有一个值为0或1的矩阵,我想获得一组相邻的1的列表。

例如矩阵

mat = rbind(c(1,0,0,0,0),
            c(1,0,0,1,0),
            c(0,0,1,0,0),
            c(0,0,0,0,0),
            c(1,1,1,1,1))

> mat
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    1    0    0    1    0
[3,]    0    0    1    0    0
[4,]    0    0    0    0    0
[5,]    1    1    1    1    1

应该返回以下4个连接的组件:

C1 = {(1,1);(2,1)}

C2 = {(2,4)}

C3 = {(3,3)}

C4 = {(5,1);(5,2);(5,3);(5,4);(5,5)}

有人知道如何在R中快速实现吗?我的真实矩阵确实相当大,例如2000x2000(但我希望连接的组件数量会相当少,即200)。

安迪·W

通过更新,您可以将二进制矩阵转换为栅格对象并使用丛集函数。然后,只是数据管理即可返回所需的确切格式。下面的例子:

library(igraph)
library(raster)

mat = rbind(c(1,0,0,0,0),
            c(1,0,0,1,0),
            c(0,0,1,0,0),
            c(0,0,0,0,0),
            c(1,1,1,1,1))
Rmat <- raster(mat)
Clumps <- as.matrix(clump(Rmat, directions=4))

#turn the clumps into a list
tot <- max(Clumps, na.rm=TRUE)
res <- vector("list",tot)
for (i in 1:tot){
  res[i] <- list(which(Clumps == i, arr.ind = TRUE))
}

然后res在控制台输出:

> res
[[1]]
     row col
[1,]   1   1
[2,]   2   1

[[2]]
     row col
[1,]   2   4

[[3]]
     row col
[1,]   3   3

[[4]]
     row col
[1,]   5   1
[2,]   5   2
[3,]   5   3
[4,]   5   4
[5,]   5   5

如果有更好的方法从栅格对象到最终目标,我也不会感到惊讶。再次,2000年到2000年的矩阵对此并不重要。


旧的(错误的答案),但对于希望连接图的组件人应该有用

您可以使用igraph软件包将邻接矩阵转换为网络并返回组件。您的示例图形是一个组成部分,因此我删除了一条边进行说明。

library(igraph)
mat = rbind(c(1,0,0,0,0),
            c(1,0,0,1,0),
            c(0,0,1,0,0),
            c(0,0,0,0,0),
            c(1,1,1,1,1))
g  <- graph.adjacency(mat) %>% delete_edges("5|3")
plot(g)
clu <- components(g)
groups(clu)

然后,最后一行在提示符处返回:

> groups(clu)
$`1`
[1] 1 2 4 5

$`2`
[1] 3

我使用此算法的经验非常快-因此我认为2,000 x 2,000不会有问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中使用igraph获取连接的组件

来自分类Dev

在Prolog中获取图形的连接组件

来自分类Dev

在R中查找双向连接的组件的大小

来自分类Dev

按照添加边的顺序获取 networkx 中的连接组件

来自分类Dev

可视化R中的强连接组件

来自分类Dev

如何使用Pyspark中的图框和Spark Dataframe中的原始数据获取连接的组件?

来自分类Dev

igraph获取已连接组件的ID

来自分类Dev

如何在Matlab中获取图像的每个连接组件的起始位置

来自分类Dev

获取连接到R中的主要父节点的节点集

来自分类Dev

在父组件中获取对子组件的引用

来自分类Dev

如何从codenameone中的组件名称获取组件?

来自分类Dev

从NextJS中的组件获取数据

来自分类Dev

如何在R中的PAM中获取主组件数据

来自分类Dev

在python中打印图的连接组件

来自分类Dev

Python 中的连接组件标记算法

来自分类Dev

从本机中的组件A中的组件B获取值

来自分类Dev

在R中连接矩阵

来自分类Dev

如何在R中具有断开连接的组件的网络上计算接近度集中度度量?

来自分类Dev

C#从组件列表中获取特定组件

来自分类Dev

如何从KnockoutJS中的组件节点获取组件的视图模型

来自分类Dev

如何从Angular2的主要组件中获取组件属性?

来自分类Dev

NextJS:在子组件中获取数据并传递给父组件

来自分类Dev

灰烬模型和组件,获取组件以检测模型中的更改

来自分类Dev

如何从Angular2的主要组件中获取组件属性?

来自分类Dev

Joomla,如何使用组件名称获取插件中的组件ID

来自分类Dev

获取在 HTML 模板中声明的组件内的组件

来自分类Dev

如何在 ReactJS 的父组件中获取子组件的 ref

来自分类Dev

Vue.js在组件中获取元素

来自分类Dev

如何获取EL中当前组件的ID

Related 相关文章

  1. 1

    在R中使用igraph获取连接的组件

  2. 2

    在Prolog中获取图形的连接组件

  3. 3

    在R中查找双向连接的组件的大小

  4. 4

    按照添加边的顺序获取 networkx 中的连接组件

  5. 5

    可视化R中的强连接组件

  6. 6

    如何使用Pyspark中的图框和Spark Dataframe中的原始数据获取连接的组件?

  7. 7

    igraph获取已连接组件的ID

  8. 8

    如何在Matlab中获取图像的每个连接组件的起始位置

  9. 9

    获取连接到R中的主要父节点的节点集

  10. 10

    在父组件中获取对子组件的引用

  11. 11

    如何从codenameone中的组件名称获取组件?

  12. 12

    从NextJS中的组件获取数据

  13. 13

    如何在R中的PAM中获取主组件数据

  14. 14

    在python中打印图的连接组件

  15. 15

    Python 中的连接组件标记算法

  16. 16

    从本机中的组件A中的组件B获取值

  17. 17

    在R中连接矩阵

  18. 18

    如何在R中具有断开连接的组件的网络上计算接近度集中度度量?

  19. 19

    C#从组件列表中获取特定组件

  20. 20

    如何从KnockoutJS中的组件节点获取组件的视图模型

  21. 21

    如何从Angular2的主要组件中获取组件属性?

  22. 22

    NextJS:在子组件中获取数据并传递给父组件

  23. 23

    灰烬模型和组件,获取组件以检测模型中的更改

  24. 24

    如何从Angular2的主要组件中获取组件属性?

  25. 25

    Joomla,如何使用组件名称获取插件中的组件ID

  26. 26

    获取在 HTML 模板中声明的组件内的组件

  27. 27

    如何在 ReactJS 的父组件中获取子组件的 ref

  28. 28

    Vue.js在组件中获取元素

  29. 29

    如何获取EL中当前组件的ID

热门标签

归档