2016-07-29 1 views
0

私はグラフ(ベイジアンネットワーク)と2つのエッジのリストを作成する関数を作成しました。私はそれを返すことができるようにグラフと2つの辺のリストを最終的なリストに入れたいと思います(したがって、戻り値は常に3つのオブジェクトを保持するリストになります)。私はリストのための追加関数で無数のスタックページを読んだが、私はまだ "xはクラス 'bn'のオブジェクトでなければならないと言う何らかのエラーが出る。"たぶん私は最終的なリストにグラフとリストを正しく追加していませんか?私はあなたがこれで私を助けることができることを願っています。以下は私のコードです。Rプログラミングでオブジェクトをリストに追加するにはどうすればいいですか?

また、いくつかのオブジェクトを持つリストをクリアしたい場合、exampleList <- NULLはそのトリックを行いますか?

startOfMethod(G_0, dataX) 
     { 
      n = 0 
      graphQueue = G_0 
      FINAL_LOCKED_NODES_ARRAY_REVERSED = list() 
      FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES = list() 
      graph_lock_andEdges_Array = list() 
      While(n < 1000) 
      { 
      ... code to build a graph G_1 

       if(score(G_1,dataX,type="aic") <= score(graphQueue,dataX, type ="aic")){ 
        graphQueue = G_1 
        FINAL_LOCKED_NODES_ARRAY_REVERSED = temp_Lock_Nodes_Array_Reversed 
        FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES = temp_Lock_Nodes_Array_NonReversed_Candidates 
        print("FINAL_LOCKED_NODES_ARRAY_REVERSED") 
        print(FINAL_LOCKED_NODES_ARRAY_REVERSED) 

        print("Break 4") 

       } 
       n = n + 1 
      } 
      graph_lock_andEdges_Array = c(graph_lock_andEdges_Array, list(graphQueue)) 
      graph_lock_andEdges_Array = c(graph_lock_andEdges_Array, list(FINAL_LOCKED_NODES_ARRAY_REVERSED)) 
      graph_lock_andEdges_Array = c(graph_lock_andEdges_Array, list(FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES)) 
      return(graph_lock_andEdges_Array) 
    } 
+0

リスト内の特定の位置 'graph_lock_andEdges_Array <にオブジェクトを入れて - 私がしようとすると、そのリスト内の最初の要素「graphQueue」何らかの理由でリスト(graphQueue、FINAL_LOCKED_NODES_ARRAY_REVERSED、FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES)' – nya

+0

@nya 'print(graph_lock_andEdges_Array [1]) 'で印刷すると' null'と表示されます – TheQ

+0

グラフは行列の形になっています。 – TheQ

答えて

2

返されるリストに3つのオブジェクトが含まれる場合は、結果リストに直接入れることができます。

graph_lock_andEdges_Array <- list(graphQueue, FINAL_LOCKED_NODES_ARRAY_REVERSED, FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES) 

個々のリスト要素にアクセスするには、二重大括弧を使用します。いくつかのサンプルデータをデモンストレーションします。

graphQueue <- matrix(1:4, ncol=2) 
FINAL_LOCKED_NODES_ARRAY_REVERSED <- list(matrix(5:8, ncol=2)) 
FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES <- list(matrix(9:12, ncol=2)) 
graph_lock_andEdges_Array <- list(graphQueue, FINAL_LOCKED_NODES_ARRAY_REVERSED, FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES) 

# display the first list element 
print(graph_lock_andEdges_Array[[1]]) 

# display the first cell in the second row 
print(graph_lock_andEdges_Array[[1]][2,1]) 

第2および第3の要素はリストのリストであることに注意してください。 2番目のリスト要素に2行目の最初のセルを表示するには、我々が使用する:

print(graph_lock_andEdges_Array[[2]][[1]][2,1]) 

を2つ目の質問に答えるために、はい<- NULLは、オブジェクトの内容がクリアされます。

str(graph_lock_andEdges_Array) 
List of 3 
$ : int [1:2, 1:2] 1 2 3 4 
$ :List of 1 
    ..$ : int [1:2, 1:2] 5 6 7 8 
$ :List of 1 
    ..$ : int [1:2, 1:2] 9 10 11 12 
graph_lock_andEdges_Array <- NULL 
str(graph_lock_andEdges_Array) 
NULL 
+1

ありがとう!それは働き終わった。その小さな構文エラーだけ:/。 – TheQ

関連する問題