GNU R: Matrix- und Listenoperationen

Aus Wikibooks
(Weitergeleitet von GNU R: Matrixoperationen)

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.

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]