2014-09-08 1 views
0
точек данных

Это мой Исходные данныеСоздать условие для разъемов R

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) 

Я хочу создать условие, которое добавляет характеристику точек данных. До сих пор я был способен создать первую и вторую степень состояния, но я не могу найти решение о том, как создать третье условие для завершения всего проекта. Я был способен создать условие для корня и стартера, моя проблема в том, как я могу создать условие для соединителей стартеров. В этом случае соединители должны быть номерами 2 и 3. И, наконец, кто не получил охарактеризован, следует называть Follower.

  • Root: Пишет не NULL
  • Стартер: Значение> X
  • Разъем: Подключение стартеры (Там всегда будет только один способ подключения их)
  • Последователь = Rest

Некоторые код здесь

cond<-Data$To=="NULL" 
ToP<-ifelse(cond,"Root","Follower") 
cond<-Data$Value>3 
ToP<- ifelse(cond,"Starter",ToP) 
NewData<-cbind(Data,ToP) 
View(NewData) 

Мои FinalDat А должен любопытное выглядеть следующим образом:

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) 

enter image description here

+0

Я не конечно, что вы просите. Вы пытаетесь условно добавить ребра между узлами к вашему графику? –

+0

Я пытаюсь охарактеризовать каждую точку на графике, и мне не хватает последнего условия, которое должно вызывать inbetweeners между стартерами как Соединители. – Carlo

+0

@ Карло на основе ваших желаемых данных, я добавил изображение с маркировкой, которую вы описали. Что делает «6» корнем? Итак, 1 был бы также корнем, если бы он не имел значение> 3? – MrFlick

ответ

1

Это все еще немного грязнее, чем хотелось бы, бит это, кажется, Ассинг правильные Lables к вершинам

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^