首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R和igraph:基于边缘事件的其他节点的属性的子图节点。

R和igraph:基于边缘事件的其他节点的属性的子图节点。
EN

Stack Overflow用户
提问于 2014-08-26 13:25:35
回答 1查看 1.5K关注 0票数 6

我有发明家在专利方面的合作数据。每个发明者都是一个节点,每一个边代表着两个发明家合作的专利。有些专利有>2名发明者,因此有些专利具有多个边.

我想对至少一个发明家位于博伊西的专利进行子签名,但并不是所有的发明家都位于博伊西。其他专利和发明人需要排除在选择之外。

例如:

代码语言:javascript
复制
gg <- graph.atlas(711)
V(gg)$name <- 1:7
V(gg)$city <- c("BOISE","NEW YORK","NEW YORK","BOISE","BOISE","LA","LA")
V(gg)$color <- ifelse(V(gg)$city=="BOISE", "orange","yellow")
gg<-delete.edges(gg, E(gg, P=c(1,2,2,3,2,7,7,6,7,3,3,4,3,5,4,5,5,6,6,1))) 
gg <- add.edges(gg,c(1,4,4,5,5,1),attr=list(patent=1))
gg <- add.edges(gg,c(7,5,5,4,4,7),attr=list(patent=2))
gg <- add.edges(gg,c(7,3,3,5,5,7),attr=list(patent=3))
gg <- add.edges(gg,c(2,7,7,6,6,2),attr=list(patent=4))
gg <- add.edges(gg,c(6,4),attr=list(patent=5))
plot(gg, edge.label=E(gg)$patent)

生产:

在这个网络中,我只想对所有发生在专利2,3,5边缘上的节点进行子签名。

在本例中,节点1不应该在子图中结束。此外,还应排除与专利#1有关的从节点5到节点4的边缘。

我已经为这个问题挣扎了一段时间了。这有可能做到吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-26 14:18:59

这个怎么样?

代码语言:javascript
复制
#final all patent names
patents <- unique(edge.attributes(gg)$patent)

#check if criteria are met for patent
okpatents <- sapply(patents, function(p){
    cities <- V(gg)[inc(E(gg)[patent==p])]$city
    nc <- sum(cities=="BOISE")
    return(nc>0 & nc < length(cities))
})

#extract subgraph
gs <- subgraph.edges(gg, E(gg)[patent %in% patents[okpatents]])

#verify
plot(gs, edge.label=E(gs)$patent)

PS。(很好的可复制的例子;)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25507007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档