2016-04-07 33 views
1

Kenarları ile birbirine bağlanmış bir dizi düğüm/köşe noktası içeren bir grafik g var, kenarların her biri belirli bir sayısal öznitelik değerine sahiptir. Ben her köşe bağlı yüksek ve en düşük att numara eklemek gerekir görselleştirme amacıylaIGraph'i R kullanarak, her tepe noktasına bağlı olanlardan en yüksek/en düşük kenar özellik değerini nasıl hesaplarsınız?

v1 v2 att 
a b 17 
a c 6 
a d 2 
b c 9 

(gelecek veya gidecek; yön burada önemli değil): gibi bir kenar listesi görünebilir. Bir bağlı bir bağlantının büyük att-değeri 17 ve en küçük 2.

çünkü

Yani örneğin ben, 2'ye bir için 17 ve v$min bir için v$max ayarlamak istiyorum bunun teması boyunca bazı varyantları çalıştı:

V(g)$min=min(E(g)[incident(g,V(g), mode='total')]$att) 

Bu neredeyse sağ ben tek bir düğüm üzerinde çalıştığınızda olduğu gibi doğru cevabı vermek için göründüğünü gibi görünüyor

min(E(g)[incident(g,V(g)[2], mode='total')]$att) 

ancak tüm düğümlerde denediğimde çalışmaz. Amaç, her köşe için V(g)$min ve V(g)$max setini almaktır.

cevap

1

umarım bu bir ödev sorun, sadece genelleme parçayı

library(igraph) 
library(plyr) 
df <- data.frame(read.table(text="v1 v2 weight 
a b 17 
a c 6 
a d 2 
b c 9", header=T)) 
df$weight <- as.numeric(df$weight) 

#transform df into igraph 
g <- graph.data.frame(df, directed=F, vertices=NULL)  

#for each vertex, get all incidental edges, weights and use range to find min & max 
ldply(V(g), function(v) range(incident(g, v, mode='total')$weight)) 
+0

Teşekkür eksik var! Bu ev ödevi problemi değil, hayır, ama tamamen evde büyümüş (geçici grafikler). Ben (muhtemelen olması gerektiği gibi eğitimli olmamakla birlikte, özellikle de şu anda benim arkadaşım değil) olduğu kadar eğitimli olduğum kadar eğitimli bir mühendisim. Cevabı kabul ettim: bir kez daha teşekkürler! Bu arada, orijinal yaklaşımın neden çalışmadığı konusunda bir fikrin var mı? Onu biraz şaşırtmaca buluyorum - hatayı göremiyorum :) – socstuff

+0

Çalışabilir. Sadece genellemek eksik. Sapply'ı deneyebilirsiniz (1: uzunluk (V (g)), fonksiyon (n) min (E (g) [gelen (g, V (g) [n], mod = 'toplam')] $ att)) – chinsoon12