rm(list=ls())
#----------------------------------------------------------
#  Details zu R-Elementen im Skript skript_4_Profildaten.r
#----------------------------------------------------------
# Erzeugen von dataframes mit den Befehlen data.frame(), cbind() und rep()
# Erkunden Sie die Befehle im Einzelnen und kombinieren Sie sie dann
# wie im Skript. Z.B.:
x <- rep(c(1,2,-1),5)
# probieren Sie auch:
# x <- rep(c(1,2,-1),1:3)
# x <- rep(c(1,2,-1),1:7) (klappt nicht: warum?)
# x <- rep(c(1,2,-1),c(2,1,4))
# x <- rep(c(1,2,-1),c(3,1,1:4)) (klappt nicht: warum?)
y <- letters[1:15]
z <- LETTERS[3:17]
U <- cbind(x,y,z)
V <- data.frame(x,y,z)
# Worin unterscheiden sich U und V?
#
# geht auch:
R <- data.frame(a=1,b=0,c=-1,d=rep(1,14))    # testen Sie mit str(R)
W <- data.frame(a=1,b="0",c="A",d=rep(1,14)) # testen Sie mit str(W)
#
# nochmal cbind:
w1 <- cbind(1,1,1,1)
w2 <- cbind(1,1,1,1:5)
w3 <- cbind(a=1,b=1,c=1,d=1:10)
w4 <- cbind(a=1,b=-1,c=1,d=rep(1,10))
# und jetzt als dataframe:
df <- data.frame(w4)
print(w4)
print(df)
#
# Detailanalyse: was passiert in der folgenden Schleife genau?
# Legen Sie den dataframe daneben und vegleichen Sie
#
#for(i in 1:4) {
#  Dbd[,i] <- (werte[,4+(i-1)*3]-werte[,3+(i-1)*3])/100 # dry bulk density
#  Mbd[,i] <- (werte[,5+(i-1)*3]-werte[,3+(i-1)*3])/100 # moist bulk density
#  Pco[,i] <- (1 - Dbd[,i]/rho_s)*100                   # porosity ompartment
#  Wco[,i] <-  werte[,5+(i-1)*3]-werte[,4+(i-1)*3]      # water content compartment
#}
R[4,1] <- 4; R[4,3] <- 2
print(R)
print(R[2,])
print(R[,3])
S <- R[,1]+R[,3]
#
# jetzt: was tut apply?
# vergleichen Sie:
a <- R
b <- apply(R,1,mean)
c <- apply(R,2,mean)
d <- apply(R,c(1,2),mean)
# Verwenden Sie statt mean, sd, oder abs;
# man kann auch eigene einwertige Funktionen verwenden:
testfu <- function(x){ testfu <- sin(0.1*x)}
e <- apply(R,c(1,2),testfu)
#
# Wozu attach und detach?
#
names(R) <- c("r","s","t","rs")
# wie geben Sie jetzt r aus? Versuchen Sie r "return" (Fehler)
#r # geht nicht
attach(R)
r # geht
# mit detach wird das wieder rückgängig gemacht
#r # geht nicht mehr
#
# Daten runden mit trunc, signif und round
#
cat("\nRundungen\n")
print(0.001*sin(0.8))
print(trunc(0.001*sin(0.8)))
print(signif(0.001*sin(0.8),4))
print(round(0.001*sin(0.8),4))
#
# jetzt mit einem Vektor
#
cat("\nRundung von Vektoren\n")
g <- 1:10*sin(0.05*1:10)
print(g)
print(floor(g))
print(ceiling(g))
print(trunc(g))
print(signif(g,4))
print(round(g,4))
#
# zum Schluss noch etwas Graphik
#
# ein leerer plot:
x <- 1; y<-1
plot(x,y,type="n",xlim=c(0,20),ylim=c(0,10))
#
# Kurve in plot zeichnen mit lines:
lines(1:20,sqrt(1:20))
# und jetzt noch einen Pfeil:
arrows(1,1,4,4)
# und ein polygon:
polygon(c(6,8,9,7),c(2,3,2,1),col="blue")
#
