Es soll ein eigenes Histogramm erzeugt werden. Der Dateiname für das
Skript ist myhistogram.R.
myhistogramProgrammieren Sie in R die Funktion myhistogram, die als
Parameter x einen Vektor aus Zahlen erhält. Die Zahlen
werden in n Intervalle einsortiert, und es wird gezählt,
wie oft eine Zahl in einem Intervall vorkommt. Der Rückgabewert ist eine
Liste mit den Einträgen borders, die die \(n+1\) Intervallgrenzen enthalten und
counts, der die Anzahlen enthält.
min und max an die Funktion übergeben werden.
Werte aus x, die zu keinem Intervall gehören, sollen
ignoriert werden. Es wird aber eine Warnung ausgegeben, die sagt, welche
Zahlen außerhalb des Bereichs liegen.Bis auf x sollen alle Parameter optional sein. Überlegen
Sie sinnvolle Default-Werte.
Es ist natürlich nicht erlaubt, in der eigenen Funktion andere Funktionen zu nutzen, die ein Histogramm erzeugen.
Hier ein Beispiel:
# Bitte mit echter Lösung in myhistogram.R ersetzen:
myhistogram = function(x, n, min, max) {
if (missing(min)){
}
if (missing(max)){
}
if (missing(n)){
n <- 10
}
intervals <- length(x)/n
print("Intervalle: ",intervals)
print(paste("Intervalel: ", intervals))
list(borders = c(), counts = c())
}
x = seq(-5, 6, by = 1 / 3)
l = myhistogram(x)
print(l$borders)
print(l$counts)
Hier zunächst zwei Beispiele.
Es wird eine Warnung ausgeben:
## Warning in myhistogram(x, n = 10, min = -5, max = 6): Zahl(en) außerhalb
## Intervallgrenzen: 6
x = seq(-5, 6, by = 1 / 3)
# myhistogram(x, n = 10, min = -5, max = 6)
solution = list(
borders = c(-5.0, -3.9, -2.8, -1.7, -0.6, 0.5, 1.6, 2.7, 3.8, 4.9, 6.0),
counts = c(4, 3, 3, 4, 3, 3, 4, 3, 3, 3)
)
x = seq(-5, 6, by = 1 / 3)
# myhistogram(x, n = 5, min = -10, max = 10)
solution = list(borders = c(-10, -6, -2, 2, 6, 10),
counts = c(0, 9, 12, 12, 1))
Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen.
Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen.
Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen.
Nutzen Sie Ihre Funktion myhistogram und erzeugen Sie
einen Barplot mit ggplot. Die x-Achse zeigt dabei die
Mitte des Intervalls und die y-Achse die Anzahl der Elemente in
dieser Klasse.
Tipp: Der Parameter stat von geom_bar ist
wichtig.
Vervollständigen Sie den Chunk. Die Kommentare sollen zu Anweisungen umgewandelt werden:
set.seed(1)
x = rnorm(0, 1, n = 1000)
# h = myhistogram(x, n = 20)
# ggplot() + ...