• Keine Ergebnisse gefunden

#---------------------------------------------------------- # Vektoren #---------------------------------------------------------- #---------------------------------------------------------- # Erzeugung von Vektoren #--------------------------------------

N/A
N/A
Protected

Academic year: 2021

Aktie "#---------------------------------------------------------- # Vektoren #---------------------------------------------------------- #---------------------------------------------------------- # Erzeugung von Vektoren #--------------------------------------"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

#---

# Vektoren

#---

#---

# Erzeugung von Vektoren

#--- x<-c(1,2,3,4,5) # 'c' kommt von concatenate

x

y-exp(x)-2 # 'exp' wird auf jedes Element von x angewendet.

y

y[2] # zweites Element von y

y[2]<-1 # Ändern des zweiten Elemnents von y

#---

# Möglichkeiten, verschiedene Arten von Vektoren zu erzeugen

#--- rep(1,5) # Wiederholung

1:5 # das Gleiche wie c(1,2,3,4,5) 7:3 # das Gleiche wie c(7,6,5,4,3) seq(1,20,by=4) # Folge mit Abstand by=4

seq(1,20,length=5) # Folge mit legth=5 Elementen # in gleichen Abständen

rep(seq(5,1,by=-2),3) # drei malige Wiederholung der # Folge 5 3 1

#---

# verschiedene Wege, um auf Elemente von Vektoren zuzugreifen

#--- x<-1:30/10

length(x) # Anzahl der Elemente von x

x[1:10] # die ersten zehn Elemnente von x x[c(1,10,15)] # die Elemente an Position 1, 10, 15

x[c(10,1,15)] # die gleichen Elemente in anderer Reihenfolge x[x>2.5] # alle Elemente von x, die > 2.5 sind

x>2.5 # Vektor von Wahrheitswerten

x[-(1:10)] # alle Elemente außer den Elementen 1 bis 10 x<-c(1,5,3) # die Elemente des Vektors können auch

names(x)<-c("Cola","Wasser","Bier") # einen Namen haben x

x["Wasser"] # Element mit Namen Wasser oder mit x[2]

#---

# Rechnen mit Vektoren

#--- x<-c(1,2,3,4,5) # 'c' kommt von concatenate

exp(x)-2 # 'exp' wird auf jedes Element von x angewendet.

y<-1:10

x+y # geht nur falls die Länge des einen Vektors ein # vielfache der Länge des anderen Vektors ist x+c(1,2,3) # geht nicht

#---

# Vektoren können von von einem beliebigen Datentyp sein,

# dieser muss aber für alle Elemente innerhalb eines Vektors

# der Selbe sein.

1/4

(2)

#--- x<-1:3

typeof(x) # Datentyp von x wird bestimmt y<-TRUE

typeof(y) # Datentyp von y wird bestimmt z<-"Wasser"

typeof(z) # Datentyp von z wird bestimmt a<-c(x,y)

a

typeof(a) # der selbe Datentyp in a ist integer b<-c(x,y,z)

b

typeof(b) # der selbe Datenty in b ist charakter

#---

# Matrizen

#---

#---

# Erzeugung von Matrizen

#--- x<-c(1,2,3,4)

matrix(x,nrow=2,ncol=2) # Elemente spaltenweise geordnet matrix(x,2,2,byrow=T) # Elemente zeilenweils angeordnet A<-matrix(1:15,3)

A

B<-matrix(1:3,3,5) B

#---

# Matrizenoperationen

#--- A+B # elementweise Summe

A*B # elementweise Multiplikation

A%*%t(B) # Matrixprodukt, t(B) ist transponierte Matrix B

#---

# Zugriff auf Matrizen und Dimensionen

#--- dim(B) # Dimension (Anzahl der Zeilen bwz. Spalten)

nrow(B) # Zeilenanzahl ncol(B) # Spaltenanzahl A[,1] # erste Spalte A[1,] # erste Zeile

A[3,1] # erstes Element der dritten Zeile A

# die Zeilen erhalten Namen:

dimnames(A)<-list(c("1.Zeile","2.Zeile","3.Zeile"),NULL) A

A["1.Zeile",] # das Gleiche wie A[1,]

#---

# Zusammenfassen von Vektoren zu Matrizen

#--- cbind(c(1,2),c(3,4)) # Spaltenweise

rbind(c(1,2),c(3,4)) # Zeilenweise

2/4

(3)

#---

# Arrays

#---

#---

# Erzeugung von Array

#---

# Array können mehr als zwei Dimensionen haben A<-array(1:12,dim=c(3,2,2))

dim(A) A

# Ansonsten sind Arrays ähnlich zu Vektoren und Matrizen B<-A^2

B A+B

#---

# der Datensatz iris3 ist ein array

#--- is.array(iris3)

dim(iris3) # Datensatz iris3 hat 3 Dimensionen # 1. Dimension: jeweils 50 Werte # 2. Dimension: jeweils 4 Merkmale

# 3. Dimension: 3 Arten von Schwertlilien

iris3[,,"Versicolor"] # Daten Verschiedenfarbigen Schwertlilien iris3[,"Petal L.","Setosa"] # Blütenblattlängen

# bei Borsten-Schwertlilien (Setosa)

#---

# Listen

#---

#---

# Erzeugung von Listen

#--- # Listen sind nützlich, um Informationen

# verschiedenen Typs zusammenzufassen

# Die einzelnen Listeneinträge können Namen haben course.info<-list(students=c("Sandra","Karl","Thomas","Nadine"), nr.of.exercises = 15,rooms=c("MIB-1113","PRÜ-1104"))

# 1.Listeneintag ein character-Vektor # 2.Listeneintag eine Zahl

# 3.Listeneintag ein Character-Vektor

course.info$rooms # Listeneintrag mit Namen rooms course.info[[3]] # 3. Listeneintag

course.info$students[2] # 2. Elemtent vom Listeneintag mit Namen students

x<-list(Zahlen=c(1,5,3),Buchstaben=c("a","z"),c(1,"a",5,"z",3)) # Hier ist das erste Elemenelement ein Integer-Vektor und das # zweite (und dritte) ein Character-Vektor

# Beachte: nur die ersten zwei Einträge haben Namen

x[[1]] # Liefert das erste Listenelement, also den Vektor Zahlen

x[1] # Gibt eine Liste zurück, die nur aus dem 1. Eintrag von x besteht # Das wird (fast) nie gebraucht, hier nur erwähnt, falls man mal # die 2. Klammer vergisst.

x[[1]][2] # Zweites Element des ersten Listeneintags x$Zahlen[2] # das Gleiche wie x[[1]][2]

3/4

(4)

#---

# Listen als Rückgabewert von Funktionen in R

#---

# Viele in R implementierte Funktionen haben Listen als Rückgabewert

#---

# Ergebnis der Funktion eigen ist eine Liste

#--- A<-matrix(c(1,2,2,5),ncol=2)

A

erg<-eigen(A) is.list(erg)

length(erg) # Die Funktion eigen liefert eine Liste mit 2 Einträgen

erg[[1]] # Das erste Listenelement ist ein Vektor mit allen Eigenwerten erg$values # das Gleich wie erg[[1]]

erg[[2]] # Das zweite Listenelement ist eine Matrix mit den Eigenvectoren erg$vectors # das Gleich wie erg[[2]]

#---

# Data Frames

#---

# Ein data.frame ist eine Kombination aus Liste und Vektor. Es ist eine Lis

# die Vektoren der gleichen Länge aber mit unterschiedlichen Objekten als

# Elementen enthält. Es istt vielleicht der wichtigste Datentyp in R.

#---

# Erzeugung von Data Frames

#---

x<-data.frame("Gewicht"=c(65,75),"Groesse"=c(168,175),"Geschlecht"=c("w","m")) x

Alter<-c(22,45)

y<-cbind(x,Alter) # cbind hängt eine Spalte an, nicht c() verwenden!

y

#---

# Zugriff auf Data Frames

#---

# Der Zugriff ist wie bei Listen

y$Gewicht # Liefert den Vektor "Gewicht"

y[y$Gewicht<70,] # Liefert alle Zeilen (als data.frame), in denen # der Wert der Spalte "Gewicht" kleiner als 70 ist

#---

# Speichern und laden von Data Frames

#---

write.table(y,"D:\\data.txt") # Speichert den data.frame y als Textdatei rm(y) # y wird gelöscht

y

# Das gespeicherte data.frame wird wieder geladen y<-read.table("D:\\data.txt") # und gleich y zugeordnet

y

#---

# Der Datensatz iris liegt als data.frame vor is.data.frame(iris)

iris

4/4

Referenzen

ÄHNLICHE DOKUMENTE

Eine (m,n) Matrix A (m Zeilen, n Spalten) ist vom Rang r, wenn r die höchste Ord- nung einer nicht verschwindenden Unterdeterminante ist, die aus Elementen der Mat-

Sie fasst zusammen, die Anzahl der Autos, die zwischen 0h und 12h am Montag, Dienstag, und Mittwoch über eine Brücke fahren. Die Werte für Montag, Dienstag, und Mittwoch sind

[r]

vor der Vorlesung abgegeben werden; sie werden in den Ubungsgruppen in der Woche

Sind zwei Vektoren im dreidimensionalen Raum immer

(b) Wenn die Beschleunigung nicht Null ist, zeigen Sie ihre Richtung so genau wie möglich durch einen Pfeil am Punkt A an.. Situation: Die Fragen dieser Seite beziehen sich auf

Elektronen, die schief in ein homogenes Magnetfeld eingeschossen werden, bewegen sich auf einer Schraubenlinie um die Feldrichtung (z-Achse). 1-3:

Die Aufgabe ist dann als richtig zu werten, wenn eine sinngemäß richtige Interpretation ange-