GNU R: Matrix- und Listenoperationen
Matrix- und Listenoperationen
BearbeitenMatrizen
BearbeitenDie wichtigsten Befehle für Matrizen in Kurzform:
t(matrix) ............transponierte matrix eigen(matrix)$val ... Eigenwerte eigen(matrix)$vec ... Eigenvektoren cov(swiss) .......... Kovarianz cor(swiss) .......... Korrelation diag(Eigenwerte) .... Diagonale der Eigenwerte %*% ................. Matrixmultiplikation
Beispiel - Matrixmultiplikation
BearbeitenEin Standardmatrixmultiplikation , die bei gegebener Matrix und einem gegebenen Spaltenvektor , kann wie folgt berechnet werden:
A <- matrix(c(1,2,3,4,5,6), ncol=3)
x <- c(4,2,1)
b = A %*% x
In diesem Beispiel wird im ersten Befehl ein Spaltenvektor c(1,2,3,4,5,6) in eine Matrix mit 3 Spalten konvertiert (ncol=3 number of columns 3), die dann als Matrix zwei Zeilen besitzt.
Zugriff auf Komponenten, Spalten, Zeilen der Matrix
BearbeitenDen Zugriff auf einzelne
- Komponenten,
- Reihen und
- Spalten
einer Matrix erfolgt durch Doppelindizierung analag zum Matrixindex in der Mathematik.
Matrixkomponente
BearbeitenMit A[1,2] greift man auf das Element in der ersten Zeile und zweiten Spalte zu.
komp <- A[2,3]
Mit der Zuweiseung enthält komp den Wert der Komponenten in der 2. Zeile und 3. Spalte (also 6).
Matrixspalte
BearbeitenDurch Weglassen des Zeilenindex wählt man alle Elemente der jewiligen Spalte aus. Im folgenden Beispiel wird aus der Matrix die 2. Spalte ausgewählt.
spalte <- A[,2]
Matrixzeile
BearbeitenDurch Weglassen des Spaltenindex wählt man alle Elemente der jewiligen Zeile aus. Im folgenden Beispiel wird aus der Matrix die 2. Zeile ausgewählt.
spalte <- A[2,]
Listen
BearbeitenFür Listen stehen die Funtionen lapply
bzw. sapply
zur Verfügung. Dabei wird auf jedes Element eines geordneten Objektes eine definierbare Funktion angewandt.
Beispiel:
In dem data.frame cars
sind die beiden metrischen Variablen speed
(Geschwindigkeit) und dist
(Distanz bis zum Stillstand) enthalten.
Wir wollen nun zu jeder Variable das arithmetische Mittel:
R> lapply ( cars, function(x){ mean(x) } ) $speed [1] 15.4 $dist [1] 42.98
Generell gibt lapply
eine Liste mit den resultierenden Objekten aus:
R> class ( lapply ( cars, function(x){ mean(x) } ) ) [1] "list"
Die Funktion sapply
fasst die daraus resultierenden Listenelemente zusätzlich zu einem einzelnen Objekt zusammen:
R> sapply ( cars, function(x){ mean(x) } ) speed dist | 15.40 42.98 R> class ( sapply ( cars, function(x){ mean(x) } ) ) [1] "numeric"
Bei komplexeren Objekten (und insbesondere bei Datumsobjekten der Klassen POSIXt
) tritt zuweilen das Problem auf, dass bei der Verwendung von lapply
die Klassendefinition verloren geht.
Dieses Problem kann durch folgenden Aufruf gelöst werden:
do.call( c , lapply ( liste , function (x) { x$datum) } ) )
InhaltsverzeichnisBearbeiten
|