为数据点R的连接器创建条件

为数据点R的连接器创建条件,r,if-statement,conditional-statements,igraph,R,If Statement,Conditional Statements,Igraph,这是我的初始数据 library(igraph) From <- c(1,2,3,4,5,6,7,8) To <- c("NULL",1,2,3,2,"NULL",6,7) Value<-c(4,2,2,7,1,2,7,2) Data <- data.frame(From,To,Value) Network <- graph.data.frame(Data[,c("From","To")],directed=TRUE) Network<- Network -

这是我的初始数据

library(igraph)
From <- c(1,2,3,4,5,6,7,8)
To <- c("NULL",1,2,3,2,"NULL",6,7)
Value<-c(4,2,2,7,1,2,7,2)
Data <- data.frame(From,To,Value)
Network <- graph.data.frame(Data[,c("From","To")],directed=TRUE)
Network<- Network - "NULL"
plot(Network)
库(igraph)

从来看,它仍然比我希望的要混乱一些,这似乎是在为顶点分配正确的标签

V(Network)$ToP <- ifelse(Data$To=="NULL","Root","Follower")
V(Network)$ToP[Data$Value>3] <- "Starter"

vs <- V(Network)[ToP=="Starter"]
sp <- shortest.paths(Network, vs,vs)
cx <- which(is.finite(sp) & lower.tri(sp), arr.ind=T)

for(i in nrow(cx)) {
   pp <- get.shortest.paths(Network, c(vs)[cx[i,1]], c(vs)[cx[i,2]])
   fidx <- tail(head(pp$vpath[[1]], -1), -1)
   if(length(fidx)>0) {
       V(Network)[fidx]$ToP<-"Connector"
   }
}

#verify with plot
V(Network)$color <- as.numeric(factor(V(Network)$ToP))+1
plot(Network)
legend(.5, -.5, levels(factor(V(Network)$ToP)), col=2:5, pch=20)

V(网络)$ToP 3]我不知道你在问什么。您是否正在尝试有条件地将节点之间的边添加到图形中?我正在尝试对图形中的每个点进行特征化,但我缺少最后一个条件,该条件应将启动器之间的中间节点称为连接器。@Carlo根据您所需的数据,我添加了一个带有您描述的标签的图像。什么使“6”成为根?如果不是价值大于3,那么1也会是根?@MrFlick这个想法来自一个讨论论坛,根开始了一个新的话题,开始者是使威胁变得有趣的人,很多人开始回复他们,实际上价值应该是Indegree,但是为了有一个更好的例子,我认为创造一个价值会更好。这就意味着发起者可以是Root的,但他们不一定非要。就我而言,知道它们是否也是Root的并不重要。
From <- c(1,2,3,4,5,6,7,8)
To <- c("NULL",1,2,3,2,"NULL",6,7)
Value<-c(4,2,2,7,1,2,7,2)
ToP<-c(Starter,Connector,Connector,Starter,Follower,Root,Starter,Follower)
Data <- data.frame(From,To,Value, ToP)
V(Network)$ToP <- ifelse(Data$To=="NULL","Root","Follower")
V(Network)$ToP[Data$Value>3] <- "Starter"

vs <- V(Network)[ToP=="Starter"]
sp <- shortest.paths(Network, vs,vs)
cx <- which(is.finite(sp) & lower.tri(sp), arr.ind=T)

for(i in nrow(cx)) {
   pp <- get.shortest.paths(Network, c(vs)[cx[i,1]], c(vs)[cx[i,2]])
   fidx <- tail(head(pp$vpath[[1]], -1), -1)
   if(length(fidx)>0) {
       V(Network)[fidx]$ToP<-"Connector"
   }
}

#verify with plot
V(Network)$color <- as.numeric(factor(V(Network)$ToP))+1
plot(Network)
legend(.5, -.5, levels(factor(V(Network)$ToP)), col=2:5, pch=20)