5 Schleifen
library("tidyverse")
library(reticulate)
use_python("/usr/local/bin/python3")
5.1 if else
<- 5
x
if(x==5) "Hallo" else "Ciao"
## [1] "Hallo"
if (x == 3) {
print("lol")
else {
} print("not lol")
}
## [1] "not lol"
5.2 repeat
<- 1
i repeat {
print(i)
<- i+1
i if (i==14) break
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
5.3 while
<- 1
i while (i < 3) {
<- i+1
i print(mean(sample(0:50,10)))
}
## [1] 28.2
## [1] 21.7
5.4 for
<- 1
i for (i in 1:5) {
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
for (i in 4:9) print(i)
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
5.4.1 i in m: m kann beliebig sein
<- c(1:7, 640:643)
m for (i in m) {
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 640
## [1] 641
## [1] 642
## [1] 643
5.4.2 praktische Anwendung: Validierung
## Warning in mean.default(res_train): argument is not
## numeric or logical: returning NA
## [1] NA
## Warning in mean.default(res_valid, na.rm = T): argument
## is not numeric or logical: returning NA
## [1] NA
5.5 apply
<- matrix(1:10, ncol = 2)
x apply(x, 1, max) # maximum jeder Zeile (margin = dimension)
## [1] 6 7 8 9 10
5.6 funktionen
definition einer Funktion, die uns Mittelwert+ SD ausgibt
<- function(x) {
mittel_sd if (is.na(mean(x))) {
<- "Überprüfen sie den Vektor!"
mittel_sd else {
} <- c(Mittelwert = mean(x), Standardabweichung = sd(x))
mittel_sd
}return(mittel_sd)
}
mittel_sd(starwars$height[!is.na(starwars$height)])
## Mittelwert Standardabweichung
## 174.35802 34.77043
<- function(vector, interval, na_do = T) { #vorfestgelegter Wert für na_do
confidence_interval # 1. standardabweichung der stichprobe
<- sd(vector, na.rm = na_do)
vec_sd # 2. Stichprobenumfang
<- length(vector)
n # 3. Mittelwert
<- mean(vector, na.rm = na_do)
vec_mean # 4.Quantil der t-Verteilung
<- qt((interval +1 )/2, df = (n-1)*vec_sd/sqrt(n))
se # berechnung Konfidenz Intervall
<- c("lower" = vec_mean -se, "upper" = vec_mean + se)
result return(result)
}
confidence_interval(starwars$height, 0.95)
## lower upper
## 172.3906 176.3254
5.7 Aufgabenblatt
library(tidyverse)
5.7.1 a)
<- 1
i repeat {
print(mean(sample(0:50,10)))
<- i+1
i if (i==10) break
}
## [1] 24.9
## [1] 26.4
## [1] 32.5
## [1] 20.1
## [1] 31.1
## [1] 23.4
## [1] 27
## [1] 22.6
## [1] 25.4
5.7.2 b)
<- 0
i while (i <= 10) {
print(mean(sample(0:50,10)))
<- i+1
i }
## [1] 23.2
## [1] 32.3
## [1] 22.9
## [1] 20.7
## [1] 27.3
## [1] 28.7
## [1] 28.7
## [1] 26.4
## [1] 19.3
## [1] 27.4
## [1] 30
5.7.3 c)
for (i in 1:10) {
print(mean(sample(0:50,10)))
}
## [1] 23.4
## [1] 32.3
## [1] 28.8
## [1] 30.3
## [1] 27.9
## [1] 20.9
## [1] 28.6
## [1] 27.7
## [1] 31.4
## [1] 14.2
5.7.4 d)
<- rnorm(1000, mean = 100, sd = 25)
norm <- matrix(norm, ncol = 20)
norm_matrix for (i in 20:22) {
for (j in 5:7) {
print(norm_matrix[i,j])
}print("--")
}
## [1] 103.8033
## [1] 59.40344
## [1] 89.47627
## [1] "--"
## [1] 80.8743
## [1] 149.3586
## [1] 136.7231
## [1] "--"
## [1] 77.39322
## [1] 104.8006
## [1] 93.5635
## [1] "--"
5.7.5 e)
<- rnorm(1000,100,33)
norm_vector <- vector()
average
for (i in 1:length(norm_vector)) {
<- mean(sample(norm_vector, 400))
mean_vec <- append(average,mean_vec)
average
}mean(average)
## [1] 100.7124
5.7.6 f)
<- function(x, M) {
wurf <- vector()
avg_vector for (i in 1:M) {
<- sample(c("Kopf", "Zahl"), x, replace = T)
samp <- append(avg_vector, sum(samp=="Kopf"))
avg_vector
}return(mean(avg_vector))
}wurf(100,10)
## [1] 52.9
5.7.7 g)
5.7.8 h)
<- function(x,y){
corr #Test
if (!(is.numeric(x) | !is.numeric(y))) {
return("Ein Wert ist nicht numerisch")
}<- cor.test(x,y, method= "pearson")
corr <- data.frame(x,y)
df <- lm(x~y,df)
lin return(list(corr$estimate,lin))
}
corr(1:10, 10:1)
## [[1]]
## cor
## -1
##
## [[2]]
##
## Call:
## lm(formula = x ~ y, data = df)
##
## Coefficients:
## (Intercept) y
## 11 -1
5.7.9 i)
“Schreiben Sie eine Schleife, die zwei Würfel M-mal rollt und deren Summe berechnet. Im Anschluss soll die erwartete Summe der beiden Würfel ausgegeben werden. Je größer M, desto mehr sollte sich die erwartete Augensumme der theoretischen, erwarteten Augensumme anpassen.” (Was ist mit markiertem Teil gemeint?)
<- 10
M for (i in 1:M) {
<- sample(1:6,1)
würfel1 <- sample(1:6,1)
würfel2 <- würfel1 + würfel2
summe1 }
5.7.10 j)
library(MASS)
apply(Animals,2, FUN=mean)
## body brain
## 4278.4388 574.5214
5.7.11 k)
apply(Animals[1],1, FUN=mean)
## Mountain beaver Cow Grey wolf
## 1.350 465.000 36.330
## Goat Guinea pig Dipliodocus
## 27.660 1.040 11700.000
## Asian elephant Donkey Horse
## 2547.000 187.100 521.000
## Potar monkey Cat Giraffe
## 10.000 3.300 529.000
## Gorilla Human African elephant
## 207.000 62.000 6654.000
## Triceratops Rhesus monkey Kangaroo
## 9400.000 6.800 35.000
## Golden hamster Mouse Rabbit
## 0.120 0.023 2.500
## Sheep Jaguar Chimpanzee
## 55.500 100.000 52.160
## Rat Brachiosaurus Mole
## 0.280 87000.000 0.122
## Pig
## 192.000