2017-12-22 6 views
0

Ich habe eine Funktion:Zugriff auf Elemente einer Matrix innerhalb einer Liste

LUD(A) 

, die auf einer Matrix A. eine LU Dekompositionsalgorithmus gilt Nun habe ich die unteren und oberen Matrizen zurückzukehren, U und L. Zum tun dies habe ich:

return(list(U=U,L=L)) 

Das Problem, das ich wirklich habe, um die Elemente dieser Liste zugreifen. Jetzt kann ich U mit anrufen;

Allerdings stellt dies U als eine Liste der Länge 1, während ich es offensichtlich als eine Matrix will. Ich habe gelesen, dass ich die Elemente der Liste zugreifen kann unter Verwendung von U [[1,1]], aber dies gibt den Fehler:

Error in U[[1, 2]] : incorrect number of subscripts 

Ich habe auch versucht, die Funktion verwendet wird;

as.matrix(U) 

Allerdings scheint dies nicht zu funktionieren.

Antwort

2

Sie extrahieren Elemente mit doppelten Klammern. Sie würden nur zwei Indizes verwenden, wenn die Liste selbst Dimensionen wie eine Matrix hätte, aber nicht. Es ist fast immer besser, Namen für die Extraktion zu verwenden, um zukunftssicher zu sein. So

Sie

wollen
both <- LUD(A) 
U <- both[["U"]] 

aber Sie

U <- both[[1]] 

wenn Ihre Definition des Ergebnisses ändert sich nicht nutzen konnte. Sie können auch

U <- both$U 

Beachten Sie, dass $ tut Teilnamensabgleich verwenden (zum Beispiel wäre es U1 passen, nicht nur U, wenn U zu fehlen passiert ist). Das scheint so zu sein, als würde man tippen, aber auf lange Sicht ist es nicht gut, sich darauf zu verlassen: Sie könnten nun U1 und nicht U haben, aber in Zukunft, wenn Sie plötzlich U hinzufügen, werden Sie das anstelle von U1 extrahieren.

Verwandte Themen