1

名前のベクトルと距離の表があります

ノード:

>V
SERPINA3
ABAT18
ABL1
ACADM

エッジ:

>distances
SERPINA3    1   179 713 627 1937    5984    747 1450    681 718 749 1124    1839    1617    1639    2017    3619    5985    5986                                                   
ABL1    3   175 12  77  81  179 144 174 208 213 223 270 274 282 305 331 348 459 532 517 785 710 889 5988    972 1120    1064    1592    1322    1324    1331    1373    1526    1566    1717    1718    1802    1847    1947
ABAT18  2 5987                                               
ACADM   4   5998

この2つのファイルから、次のコマンドを使用してgraphNELオブジェクトを作成します。

gR <- new("graphNEL", nodes=V, edgeL=edL1)

誰かがこれがどのように行われるべきかについての考えを持っていますか?どういうわけか、edgLモデルに合うように距離のリストをリストのリストに入れることができません。

このコンマを実行した後:

edL1 <- vector("list", length=ncol(Dist1))
names(edL1) <- V
for(i in 1:ncol(Dist1))
 edL1[[i]] <- list(edges=Dist1[,i], weights=sqrt(i))
gR <- new("graphNEL", nodes=V, edgeL=edL1)

私はこのエラーを受け取り続けます:

エッジのNA要素。

グラフは無向であり、次のエッジは往復しません:NA | SERPINA3、NA | ABAT18、NA | ABL1、NA | ACADM

validObject(.Object)のエラー:無効なクラス「graphNEL」オブジェクト:FALSE

ただし、データにはNAはありません。誰かアイデアがありますか?

ありがとうアッサ

4

3 に答える 3

1

graphNELオブジェクトを作成しようとしたときに、同様のエラーが発生しました。私の問題は、エッジリストの要素がノードのインデックスである必要があるということでした-したがって、例のedgeLは次のようになります

$SERPINA3
$SERPINA3$edges
[1] 1, 2, 4

対人が最初に期待するかもしれないもの(以下は正しくありません):

$SERPINA3
$SERPINA3$edges
[1] 'SERPINA3', 'ABL1', 'ACADM' 

edgeL要素がVで作成したノードにどのようにマッピングされるか(つまり、番号1、2、3、4、または179、175、5987、5998がVの要素にどのように関連するか)がよくわかりません。データに固有の回答を提供することはできませんが、ノード名ではなくインデックスを使用することで問題が解決しました。

編集:

私はあなたが説明している正確な問題に遭遇し、有用なアドバイスを与えるリンクを見つけました。最初に有向グラフを作成し、ugraph関数を使用して、有向グラフによって表される「基礎となる」無向グラフを取得します。

于 2013-02-12T20:38:19.730 に答える
1

私はしばらくこれに苦労しました。ドキュメントはあまり明確ではありません。結局、私はRgraphvizパッケージのドキュメントで答えを見つけました。

エッジを割り当てずにグラフを初期化できます。

gR = new("graphNEL", nodes = V, edgemode = "directed")

次に、以下を使用してエッジを1つずつ追加できます。

gR = addEdge("SERPINA3", "ABAT18", gR, 5987)

これが進むべき道ではないと確信していますが、私のグラフにはエッジがほとんどないので、より良い代替案を探すのをやめました。

于 2013-08-22T11:27:47.267 に答える
1

すべてのエッジをキャプチャするマトリックスを定義する必要があります。例として:

From <- c("A","A","C","C")

To <- c("B","C","B","D")

L <- cbind(From,To)

mygraphNEL <- ftM2adjM(L, edgemode="directed")

詳細はこちら

于 2015-08-03T12:47:40.030 に答える