x<-1x<-1#Zu Grundlagen ?dexp # öffnet Hilfe #Taschenrechner x<-1 #Zuweisung mit <-, Kommentare werden mit '#' eingeleitet x #Ausgabe (x+1)*2 #Einfache Rechnungen exp(x) pi*x #Rechnen mit Vektoren x<-c(1,2,3,4) #Zahlen mit 'c()' zu Vektoren zusammenfassen x #Ausgabe (x+1)*2 #einfache Rechnung elementweise (x+c(0,1))^c(1,2) #Achtung x+c(0,1,2) #Geht nicht! x*x #Elementweise x%*%x x<-seq(-pi,pi,length=10) #Erzeugt Vektor mit 10 Werten zwischen -pi und pi x<- rep(1,10) y<-sin(x) # Auch Vektor y max(c(1,2,3)) max(1,2,3) min(c(1,2,3)) min(1,2,3) #Stichprobenmittel und Stichprobenvarianz x<-c(1,2,3,1) mean(x) var(x) #Zu Data Frames x<-c("Franz","Anton","Heinrich") y<-c(1.0,1.7,2.7) z<-c(95,85,67) Notenliste<-data.frame(Name=x,Note=y,Punkte=z) Notenliste Notenliste$Note #Zugriff auf die Spalte "Note" als Vektor Notenliste[2] #Vorsicht,liefert data frame Notenliste[[2]] #Zugriff auf die Spalte "Note" als Vektor Notenliste<-data.frame(row.names=x,Note=y,Punkte=z) #Zeilen sind jetzt über Notenliste #die Namen ereichbar Notenliste["Anton",] #Liefert die Zeile von Anton Notenliste["Anton","Note"] #Elemente über Namen angesprochen Notenliste[2,1] #Liefert das Gleiche #Data Frame aus Datei getwd() #Liefert Arbeitsverzeichnis write.table(Notenliste2,file="Notenliste.txt") #Data Frame in Datei schreiben write.table(Notenliste2,file="Notenliste2.txt",quote=F,row.names=F) #Anführungszeichen und Spaltennummer weglassen Notenliste<-read.table("Notenliste.txt") #Datei einlesen, ohne header, hier falsch Notenliste Notenliste$V2 #Falls Spalten keinen Namen, dann Zugriff über V1,V2,... Notenliste<-read.table("Notenliste.txt",header=T) #Hier besser mit header einlesen Notenliste geschlecht<-c(rep("m",4),rep("w",2)) #Neuer Vektor geschlecht Notenliste2<-cbind(Notenliste,geschlecht) #Vektor an Data frame anhängen Notenliste2 #Ausgabe c(Notenliste,geschlecht) #Vorsicht, geht nicht rbind(Notenliste,data.frame(Name="Heinz",Note=3.7,Punkte=54)) #Zeile hinzufügen Notenliste2[Notenliste2$geschlecht == "m",] #Teil-Data Frame mit geschlecht = "m" #Grapfiken in R #1. Plotten von Funktionen plot(function(x) pnorm(x,mean=1),-3,5,ylab="f(x)",main="Normalverteilung") # Plot Verteilungsfunktion Normalverteilung mit Mittelwert 1 und Varianz 1 plot(function(x) dnorm(x,mean=1),-3,5,add=T) #add=T bewirkt, dass Dichte in existierende Grafik gezeichnet wird text(locator(1),"µ") #Mausklick in Grafik setzt an Stelle ein "µ" #2.Plotten von Histogrammen und Boxplots x<-rnorm(1000) #1000 Standardnormalverteilte Zufallszahlen simulieren y<-rpois(1000,2) #1000 Poissonverteilte Zufallszahlen mit lambda=2 simulieren boxplot(x,y,names=c("Normalverteilung","Poisson-Verteilung")) #Boxplot erzeugen par(mfrow=c(1,2)) #In Grafikfenster werden jetzt 2 Grafiken nebeneinander gesetzt hist(x,freq=F) #Histogramm von x mit relativen Häufigkeiten hist(y,freq=F) #Histogramm von x mit relativen Häufigkeiten #Jetzt muß das Paket "MASS" geladen werden um die Funktion truehist zu verwenden truehist(y) #anderes Histogramm t<-table(y) #Häufigkeitstabelle erstellen, möglich, da y natürliche Zahlen enthält t rt<-t/sum(t) #Tabelle mit relativen Häufigkeiten rt barplot(rt) #Andere Möglichkeit für Histogramm bei natürlichen Zahlen #Plotten eigener Funktionen #Definieren eigener Funktionen wurzel<-function(x,n=2) { #2 ist default-Wert von der Variablen n out<-x^(1/n) return(out) } plot(wurzel,0,10) plot(function(x) wurzel(x,n=2),0,10) #Das Gleiche wie oben plot(function(x) wurzel(x,n=4),0,10) #Indikatorfunktion ind<-function(x,a,b) { #Indikatorfunktion von dem Intervall (a,b) return((x>a)*(x=-pi) && (x<=pi)) return(sin(x)) #Nimmt aber keine Vektoren an else return(0); } f2(pi/2) #Geht f2(2*pi) #Geht plot(f2,-2*pi,2*pi) #Geht nicht, da f2 keine Vektoren akzeptiert #Grafiken speichern, entweder mit rechter Mausklick in Grafik #und dann "Speichere als Postscript #Oder : plot(sin,-pi,pi) dev.copy(postscript,"plot.ps") dev.off() #Wichtig! Device wieder schließen