GNU R: Matrix- und Listenoperationen
Matrix- und Listenoperationen
[Bearbeiten]Matrizen
[Bearbeiten]Die 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
[Bearbeiten]Ein 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
[Bearbeiten]Den Zugriff auf einzelne
- Komponenten,
- Reihen und
- Spalten
einer Matrix erfolgt durch Doppelindizierung analag zum Matrixindex in der Mathematik.
Matrixkomponente
[Bearbeiten]Mit 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
[Bearbeiten]Durch 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
[Bearbeiten]Durch 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
[Bearbeiten]Fü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) } ) )
Inhaltsverzeichnis[Bearbeiten]
|