私が使用しているデータセットは、ノード間のリンクを示しています。例:
> data2
V1 V2
1 10000 4725
2 4725 6805
3 4725 3250
4 5725 3250
5 1725 7673
(たとえば、小さなデータフレームを使用します)。ここで、データフレームは、ノード 10000 と 4725 の間に無向リンクがあること、ノード 4725 と 6805 の間にリンクが存在することなどを示しています。igraph パッケージを使用して、個々のノードの次数を取得しています。
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
次に、次数に従ってノードを降順に並べ替えます。
> dSorted <-sort.int(deg,decreasing=TRUE,index.return=FALSE)
> dSorted
4725 3250 10000 5725 1725 6805 7673
3 2 1 1 1 1 1
データフレームの最初の列を取得します。
> ln1 <- data2[,1]
> ln1
[1] 10000 4725 4725 5725 1725
私の目的は、ln1 のノードを dSorted のノードの対応する順序に置き換えることです。たとえば、10000 は 3 に置き換える必要があります。これは、dSorted では 10000 が 3 番目のインデックスになるためです。同様に、4725 は最初に来るため、1 に置き換える必要があります。 dSorted.I は次のコードを試しました。
> for(i in 1:length(deg)){ln1[which(ln1==dSorted[i])]<-i}
しかし、それは機能していません.ln1は同じままです.dSortedでは、ノード番号がインデックスと見なされていることに気づきました.そのため、次のコードも試しました(dSortedはインデックスベクトルを返します):
> dSorted <- sort.int(deg,decreasing=TRUE,index.return=TRUE)
> for(i in 1:length(deg)){ln1[which(ln1==dSorted$ix[i])]<-i}
しかし、ln1 はまだ同じままです。私は R に非常に慣れていません。