如何删除R中图形中的顶点?

Posted

技术标签:

【中文标题】如何删除R中图形中的顶点?【英文标题】:How to delete vertices in graph in R? 【发布时间】:2013-02-27 08:53:37 【问题描述】:

我正在尝试使用delete.vertices(graph ,vertex id) 删除图中的顶点,但我看到此错误:”Cannot create iterator, Invalid vertex id, Invalid vertex id”

这是我的代码:

graph<-read.graph(paste0("H:/graph.txt"),format="ncol",directed="TRUE")
delete.vertices(graph,c(717527,61373))

717527 和 61373 是我的顶点数。

这是图表:

我该怎么做?

【问题讨论】:

【参考方案1】:

您收到错误是因为给定的顶点之一不在图形顶点列表中。一个建议是尝试使用igraph 函数,一旦你熟悉了它们,就将它应用到你的自定义图形中。这里有一个演示:

 library(igraph)
 g <- graph.ring(10)
 V(g)
Vertex sequence:
 [1]  1  2  3  4  5  6  7  8  9 10

现在我尝试删除一个现有的顶点:

delete.vertices(g, c(2,7,9) )
IGRAPH U--- 7 4 -- Ring graph
+ attr: name (g/c), mutual (g/x), circular (g/x)

对于不存在的,我得到你的错误:

delete.vertices(g, c(20))

Error in delete.vertices(g, c(20)) : 
  At iterators.c:759 : Cannot create iterator, invalid vertex id, Invalid vertex id

【讨论】:

【参考方案2】:

你在使用 Igraph 吗?

read.graph 函数可能会将顶点 ID 作为字符串读取。在这种情况下,您可能需要:

delete.vertices(graph,c('717527','61373'))

相反。此外,delete.verticies 返回一个新的图形对象。如果您希望稍后显示更改,您需要确保将结果存储在图表中。

graph<-read.graph(paste0("H:/graph.txt"),format="ncol",directed="TRUE")
graph<-delete.vertices(graph,c('717527','61373'))

【讨论】:

以上是关于如何删除R中图形中的顶点?的主要内容,如果未能解决你的问题,请参考以下文章

R怎么删除一列数据?

如何确定删除给定循环是不是会断开图表

删除最小数量的顶点以使所有顶点隔离

r中怎么删除图形坐标值

通过一个顶点删除创建一个常规图形

删除最小数量的顶点以使所有顶点都被隔离