R中的igraph:基于节点属性删除边缘

时间:2014-08-20 14:02:03

标签: r attributes igraph subgraph

我有一个名为igraph的{​​{1}}对象,其中y为顶点,inventor为边。

每个patent都有一个属性vertex,指的是发明人的位置。 每个city都有一个属性edge,指的是发明人公司的位置。

我想只选择至少有一位发明人位于X市的专利,并且该专利的至少一位发明人不在X市。

如果我运行以下脚本,我最终会获得专利,其中的发明者居住在X市,但该公司位于那里:

h_city

如果按照MrFlick的建议运行以下脚本来回答另一个问题,我最终还会获得所有发明人都来自X市的专利:

city_x<-subgraph.edges(y, which(E(y)$h_city=="x"))

下面我举一个例子,也是由MrFlick为不同的答案制作的 - 我稍微改变了一下:

city_x<- subgraph.edges(y, E(y)[inc(V(y)[city=="x"])])

这会产生:

library(igraph)

y <- graph.atlas(711)
V(y)$name <- 1:7
V(y)$prop <- c(1,2,2,3,3,1,1)
V(y)$color <- ifelse(V(y)$prop>=3, "red","yellow")

使用此代码,我还在节点号4和5之间包含#4边,因为它们都有E(y)[inc(V(y)[prop>=3])] #Edge sequence: #[3] 4 -- 3 #[4] 5 -- 4 #[5] 6 -- 5 #[10] 5 -- 3 。我不想选择那个优势。至少有一个节点需要匹配标准,至少有一个节点不需要。

对于此示例:如何仅选择至少一个节点具有prop>=3的边缘,但边缘上至少有一个节点事件不会。

修改

我也试过(错误地,我敢打赌)将函数用作prop>=3neighbors,但似乎都没有用:

incident

有什么建议吗?

非常感谢!

0 个答案:

没有答案