# Zahlenreihe von 1 bis 10
<- c(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10)
zahlen # ausgeben
zahlen
## [1] 1 2 3 4 5 6 7 8 9 10
Bislang haben wir unsere Daten von Hand eingeben. Für die Zahlenreihe von 1 bis 10 sah das so aus:
# Zahlenreihe von 1 bis 10
<- c(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10)
zahlen # ausgeben
zahlen
## [1] 1 2 3 4 5 6 7 8 9 10
In R
lassen sich solch kontinuierliche Reihen mit einem :
erzeugen:
# auch Zahlenreihe von 1 bis 10
<- 1:10
zahlen
# ausgeben
zahlen
## [1] 1 2 3 4 5 6 7 8 9 10
In Kombination mit c()
geht auch:
# neuer Vektor aus 2 Zahlenreihen
<- c(1:10, 100:110)
zahlen2
# ausgeben
zahlen2
## [1] 1 2 3 4 5 6 7 8 9 10 100 101 102 103 104 105 106 107 108
## [20] 109 110
Mit der Funktion seq()
lassen sich Sequenzen
erstellen. Wir übergeben der Funktion Start- und Endpunkt, und in welchen Schritten gezählt werden soll. Eine Zahlenreihe von 1
bis 10
in den Schritten 0.5
erzeugt man so:
# eine Sequenz erstellen
<- seq(from=1, to=10, by=0.5)
sequenz
# ausgeben
sequenz
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## [16] 8.5 9.0 9.5 10.0
oder schlicht
# erstellt die selbe Sequenz
<- seq(1, 10, 0.5)
sequenz
# ausgeben
sequenz
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## [16] 8.5 9.0 9.5 10.0
Mit der Funktion rep()
(für repeat) lassen sich wiederholte Werte erzeugen
# erzeuge 20 wiederholte Werte,
# 20 mal "weiblich"
<- rep("weiblich", 20)
geschlecht
# ausgeben
geschlecht
## [1] "weiblich" "weiblich" "weiblich" "weiblich" "weiblich" "weiblich"
## [7] "weiblich" "weiblich" "weiblich" "weiblich" "weiblich" "weiblich"
## [13] "weiblich" "weiblich" "weiblich" "weiblich" "weiblich" "weiblich"
## [19] "weiblich" "weiblich"
In Kombination mit c()
geht auch:
# erzeuge 20 wiederholte Werte,
# 10 mal "weiblich" und 10 mal "maennlich"
<- c(rep("weiblich", 10), rep("maennlich", 10))
geschlecht # ausgeben
geschlecht
## [1] "weiblich" "weiblich" "weiblich" "weiblich" "weiblich" "weiblich"
## [7] "weiblich" "weiblich" "weiblich" "weiblich" "maennlich" "maennlich"
## [13] "maennlich" "maennlich" "maennlich" "maennlich" "maennlich" "maennlich"
## [19] "maennlich" "maennlich"
Oder anders verschachtelt:
# erzeuge 20 wiederholte Werte, anders verschachtelt
# 10 mal das Paar "weiblich" "maennlich"
<- rep(c("weiblich", "maennlich"), 10)
geschlecht # ausgeben
geschlecht
## [1] "weiblich" "maennlich" "weiblich" "maennlich" "weiblich" "maennlich"
## [7] "weiblich" "maennlich" "weiblich" "maennlich" "weiblich" "maennlich"
## [13] "weiblich" "maennlich" "weiblich" "maennlich" "weiblich" "maennlich"
## [19] "weiblich" "maennlich"
In R
lassen sich auch Zufallszahlen generieren. Hierfür steht die Funktion sample()
zur Verfügung.
# erzeuge 20 Zufallswerte
sample(20)
## [1] 13 12 5 6 15 16 4 17 9 18 11 8 7 10 2 3 20 19 1 14
Der Bereich, aus welchem die Zahlen gezogen werden sollen, kann ebenfalls angegeben werden.
# erzeuge 20 Zufallswerte zwischen 150 und 250
sample(150:250, 20)
## [1] 193 210 183 219 212 153 248 184 238 235 192 156 181 202 247 158 171 159 242
## [20] 244
Über die Option replace
kann angegeben werden, ob Werte auch doppelt vorkommen können (so genanntes zurücklegen).
# erzeuge 20 Zufallswerte zwischen 150 und 250 # MIT zurücklegen
sample(150:250, 20, replace=TRUE)
## [1] 166 201 205 171 244 150 219 183 200 195 214 174 186 157 182 245 232 241 177
## [20] 197
Zudem bieten die in R
implementierten Wahrscheinlichkeitsverteilungen
über ihre r
-Funktionen (für random, siehe Kapitel 18) die Möglichkeit, zufällige Werte zu erzeugen.
Die Funktion runif()
erzeugt Zufallswerte aus der “stetigen Gleichverteilung”. Standardmäßig liegen die Zufallswerte zwischen 0
und 1
.
# erzeuge 20 Zufallswerte zwischen 0 und 1
runif(20)
## [1] 0.46598719 0.39003139 0.02006522 0.37697093 0.55991284 0.85708359
## [7] 0.38480971 0.52791704 0.60063752 0.26137136 0.29005016 0.48007517
## [13] 0.92000555 0.40072018 0.21317271 0.67176682 0.05861411 0.99706914
## [19] 0.14903547 0.51855664
Man kann aber (ähnlich wie bei sample()
) den Bereich festlegen, aus welchem die Werte gezogen werden sollen.
# erzeuge 20 Zufallswerte zwischen 30 und 150
runif(20, min=30, max=150)
## [1] 131.53441 116.19237 58.95768 95.64520 130.17622 33.35472 86.32612
## [8] 126.68160 127.68616 78.46932 56.21172 80.20337 110.26449 90.91803
## [15] 109.24312 91.41496 130.26629 115.05374 134.90471 31.37754
Für ganzzahlige Werte können die Rundungsfunktionen round()
, floor()
und ceiling()
eingeschoben werden.
# erzeuge 20 GANZZAHLIGE Zufallswerte zwischen 30 und 150
floor(runif(20, min=30, max=150))
## [1] 136 149 90 73 122 100 106 133 98 60 140 134 59 78 122 44 53 49 109
## [20] 132
Um Zufallszahlen aus der Standardnormalverteilung zu generieren eignet sich die Funktion rnorm()
.
# erzeuge 40 zufällige Werte aus der \# Standardnormalverteilung
<- rnorm(40)
normal
# ausgeben
normal
## [1] 1.4505432 0.1943924 -0.6912054 1.3398599 2.7361084 -0.9441017
## [7] -1.7810619 -0.7160587 0.9110785 -0.7721921 -0.7820777 -0.4321952
## [13] -0.6675648 1.3895059 0.9118739 0.2053894 2.5844322 -0.7893881
## [19] 0.5880771 -0.7112873 1.5849968 0.6763896 -0.2327618 0.6374729
## [25] -1.3707612 -1.4256595 -1.2461920 -0.6832669 -0.9796754 -0.4625191
## [31] 1.2145097 -1.2778199 0.7478688 3.3915088 1.6193896 -1.8508898
## [37] 1.0554223 -0.8053435 1.5961720 0.7759900
Somit erzeugt rt()
zufällige Werte aus der t-Verteilung.
# erzeuge 40 zufällige Werte aus der \# t-Verteilung bei 10 Freiheitsgraden
<- rt(40, df=10)
t
# ausgeben
t
## [1] 0.80816081 0.63464272 -1.04867067 0.28763708 1.46970112 -1.67681763
## [7] 0.76374895 0.35673699 0.43852070 0.02057365 -0.31623317 -0.60273538
## [13] 0.71802180 -0.26756381 1.17957855 0.62269651 -0.21301326 -0.75593568
## [19] 0.21687205 -1.16856330 0.43970628 -1.38123836 -0.20136631 1.64734295
## [25] -1.64091019 -0.30674880 -2.31814854 0.57115467 0.55923590 0.16815230
## [31] 0.26530835 -0.71421268 -1.60675413 0.07215224 -0.72087588 2.21050387
## [37] 2.16195314 0.95226057 -0.51923006 0.84492165