the datasets working shows links between nodes.for example:
> data2 v1 v2 1 10000 4725 2 4725 6805 3 4725 3250 4 5725 3250 5 1725 7673 (using small dataframe example).here dataframe says there undirected link between node 10000 , 4725,a link exists between node 4725 , 6805 , forth.using igraph package,i obtaining degree individual nodes:
g<-graph.data.frame(data2, directed=f) deg <- igraph::degree(g) > deg 10000 4725 5725 1725 6805 3250 7673 1 3 1 1 1 2 1 next,i sorting nodes according degrees in decreasing order:
> dsorted <-sort.int(deg,decreasing=true,index.return=false) > dsorted 4725 3250 10000 5725 1725 6805 7673 3 2 1 1 1 1 1 taking first column of dataframe:
> ln1 <- data2[,1] > ln1 [1] 10000 4725 4725 5725 1725 my objective replace nodes in ln1 nodes' corresponding orders in dsorted.for example,10000 should replaced 3,because in dsorted 10000 comes @ 3rd index.similarly 4725 should replaced 1,because comes first in dsorted.i have tried following code:
> for(i in 1:length(deg)){ln1[which(ln1==dsorted[i])]<-i} but not working.ln1 stays same.it occurred me in dsorted,the node numbers being considered indexes.so tried following code well(dsorted returning index vector):
> dsorted <- sort.int(deg,decreasing=true,index.return=true) > for(i in 1:length(deg)){ln1[which(ln1==dsorted$ix[i])]<-i} but ln1 still stays same.i new r.would appreciate if kindly shows me path here.
if understand correctly, can do:
ln1 <- order(order(deg, decreasing=t)) # [1] 3 1 4 5 6 2 7 # if want names names(ln1) <- names(deg) # 10000 4725 5725 1725 6805 3250 7673 # 3 1 4 5 6 2 7 so mentioned, 10000 has value 3 because 3rd in order 4725 has value 1 because 1st in order, etc.
the way sort , order related: sort default sorts vector, , order returns indices sort vector.
why double-order? kind of inverses of each other.
sorted <- sort(deg) deg[order(deg)] == sorted sorted[order(order(deg))] == deg order(deg) arrange unsorted deg in order. order(order(deg)) arrange sorted deg resembles original order. confusing in words, play around , you'll see.
Comments
Post a Comment