###################################################################### # Author: Michael Höhle # Date: 26 April 2006 # HelloWorld in R. Ein paar Beispiele. ###################################################################### ###################################################################### # Vektoren. Immer in Vektoren denken. ###################################################################### x <- c(5,2,8,101,3,5,2,1) x y <- c("hello","world") y c(x,y) #Sequenzen z <- 1:10 z z <- seq(1,10,by=2) z ?seq help.start() # Wiederholungen rep(0, times=5) #Zugriff auf Elemente des Vektors x[3] x[2:3] x[-c(1,3)] x[3] <- 23 x[3] #Rechnen mit Vektoren x + 1 x %% 2 x^2 sum(x) exp(x) #Operationen auf Vektoren x == 5 sum(x==5) #Auswahl x[x<5] x[x<5] <- 1 ###################################################################### # Matrizen ###################################################################### M <- matrix(12,ncol=4,nrow=3) M M <- matrix(1:12,ncol=4,nrow=3,byrow=T) M M[,1] M[2:3,2:3] #Transponieren t(M) #Multiplizieren - matrix N <- matrix(1:16,ncol=4,nrow=4) N %*% N #Multiplizieren - elementweise N * N ###################################################################### # Funktion die x^2 berechnet # # Parameter # x - unabhängige variabel, i.e. berechne f(x) # # Return-value # x^2 ###################################################################### f <- function(x) { return(x^2) } class(x) class(f) x f(x) ###################################################################### # Standard Plot einer Funktion ###################################################################### x <- seq(-1,1,length=1000) plot(x,f(x),type="l") ##Plot hinzufügen lines(x,1-f(x),col=2) ##oder gleich in einem plot matplot(x,cbind(f(x),1-f(x)),type="l") legend(0.5,1,c("f(x)","1-f(x)"),col=1:2,lty=1) #Erstellen einer PDF-Datei pdf("helloR.pdf") matplot(x,cbind(f(x),1-f(x)),type="l") dev.off() ###################################################################### # # Fortgeschrittenes R (aka. Level 2) # - Monte Carlo Methoden zur simulierung. ###################################################################### ###################################################################### # Es werden n Würfel geworfen und die maximale Augenzahl # zurückgegeben # # Parameter: # n - Anzahl Würfel # # Returns: # Die grösste Augenzahl der n Würfel ###################################################################### maxWurf <- function(n) { x <- 1:6 y <- sample(x,size=n,replace=TRUE) return(max(y)) } #Zwei Würfel werden insgesamt 1000 Mal gerollt. s <- replicate(1000,maxWurf(2)) mean(s) table(s)/length(s) #Debugging (siehe auch das debug Paket) debug(maxWurf) maxWurf(2) undebug(maxWurf) ###################################################################### # Mittelwert von "size" Wiederholungen der maxWurf Funktion mit n # Würfeln. # # Parameter: # n - Anzahl Würfel # size - Größe der Stichprobe # # Returns: # Mittelwert der n maxwurf Werte. ###################################################################### meanmaxwurf <- function(n,size=1000) { return(mean(replicate(size,maxWurf(n)))) } #Funktion meanmaxwurf auf den Vektor 1:6 benutzen (apply) result <- sapply(1:6,meanmaxwurf,size=5000) ###################################################################### #Voila...3 Linien in Kompaktform. ###################################################################### maxWurf <- function(nW) {return(max(sample(1:6,nW,rep=T)))} meanmaxwurf <- function(n,size=1000) { return(mean(replicate(size,maxWurf(n)))) } sapply(1:6,meanmaxwurf) ##Tinn-R / Sweave