2016-07-29 2 views
0

Also habe ich eine Funktion erstellt, die ein Diagramm (ein Bayesian Netzwerk) und 2 Liste von Kanten erstellt. Ich möchte das Diagramm und zwei Listen von Kanten in eine endgültige Liste einfügen, so dass ich es zurückgeben kann (also wäre die Rückkehr eine Liste, die immer drei Objekte enthält). Ich habe unzählige Stapel-Seiten in der Append-Funktion für Listen gelesen, aber ich bekomme immer noch einen Fehler, der besagt, dass "x ein Objekt der Klasse 'bn' sein muss." Vielleicht füge ich die Grafiken und Listen nicht korrekt zu meiner endgültigen Liste hinzu? Ich hoffe, ihr könnt mir dabei helfen. Hier ist mein Code unten.Wie fügt man einer Liste in der R-Programmierung Objekte hinzu?

Auch, wenn ich eine Liste löschen möchte, die einige Objekte besitzen, würde exampleList <- NULL den Trick tun?

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

ein Objekt in einer bestimmten Position in der Liste Setzen Sie 'graph_lock_andEdges_Array <- Liste (graphQueue, FINAL_LOCKED_NODES_ARRAY_REVERSED, FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES)' – nya

+0

@nya Aus irgendeinem Grund ist es das erste Element in der Liste "graphQueue", dass, wenn ich versuche, Drucken mit 'print (graph_lock_andEdges_Array [1])' es druckt 'null' – TheQ

+0

der Graph ist in Form einer Matrix, ich bin nicht sicher, ob diese Information überhaupt helfen würde? – TheQ

Antwort

2

Wenn die zurückgegebene Liste drei Objekte enthalten soll, können wir sie direkt in die Ergebnisliste aufnehmen.

graph_lock_andEdges_Array <- list(graphQueue, FINAL_LOCKED_NODES_ARRAY_REVERSED, FINAL_LOCKED_NODES_ARRAY_NON_REVERSED_CANDIDATES) 

einzelne Listenelemente zugreifen zu können, verdoppelte Verwendung eckige Klammer. Ich werde einige Beispieldaten demonstrieren.

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]) 

Beachten Sie, dass das zweite und dritte Element Listen in Listen sind. Um in der zweiten Reihe in dem zweiten Liste Elemente die erste Zelle anzuzeigen, verwenden wir:

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

Um die zweite Frage zu beantworten, ja <- NULL den Inhalt des Objekts löschen.

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

vielen dank! Es endete mit der Arbeit. Nur diese kleinen Syntaxfehler: /. – TheQ

Verwandte Themen