Re: In Funktion auf Variable zugreifen
Verfasst: Mo Mai 04, 2020 12:40 pm
Hallo anfänger,
mit ein paar kleinen Syntax-Korrekturen und unter zuhilfenahme der Funktion cat sieht das jetzt so aus:
Ich könnte mir vorstellen, dass Du Deiner Funktion mittelwerte eine print-Option hinzufügst. Dann kann der Nutzer gleich bei Aufruf entscheiden, ob das Ergebnis mittels cat ausgegeben werden soll oder in der Version mit \n zur Weiterverwendung in anderen Funktionen bleiben soll. Zum Beispiel:
Eine Lösung für Fortgeschrittene wäre objektorientierte Programmierung. Du schaffst eine Objektklasse für mittelwerte-Ergebnisse und kannst Du eine eigene print-Funktion für Objekte dieser Klasse definieren:
LG,
Bernhard
mit ein paar kleinen Syntax-Korrekturen und unter zuhilfenahme der Funktion cat sieht das jetzt so aus:
Code: Alles auswählen
mittelwerte <- function(input1, input2, input3){
mittelwert1 <- mean(input1)
mittelwert2 <- mean(input2)
mittelwert3 <- mean(input3)
differenz12 <- mittelwert1 - mittelwert2
differenz13 <- mittelwert1 - mittelwert3
werte <- cbind(mittelwert1, mittelwert2, mittelwert3)
differenz <- paste("Die Differenz zwischen Wert 1 & Wert 2 beträgt", differenz12, "\nDie Differenz zwischen Wert 1 und Wert 3 beträgt", differenz13)
return(list("Werte" = werte, "Differenz"=differenz))
}
ergebnis <- mittelwerte(1:3,2:4,3:5)
ergebnis$Differenz
cat(ergebnis$Differenz)
Ich könnte mir vorstellen, dass Du Deiner Funktion mittelwerte eine print-Option hinzufügst. Dann kann der Nutzer gleich bei Aufruf entscheiden, ob das Ergebnis mittels cat ausgegeben werden soll oder in der Version mit \n zur Weiterverwendung in anderen Funktionen bleiben soll. Zum Beispiel:
Code: Alles auswählen
mittelwerte <- function(input1, input2, input3, silent=FALSE){
mittelwert1 <- mean(input1)
mittelwert2 <- mean(input2)
mittelwert3 <- mean(input3)
differenz12 <- mittelwert1 - mittelwert2
differenz13 <- mittelwert1 - mittelwert3
werte <- cbind(mittelwert1, mittelwert2, mittelwert3)
differenz <- paste("Die Differenz zwischen Wert 1 & Wert 2 beträgt", differenz12, "\nDie Differenz zwischen Wert 1 und Wert 3 beträgt", differenz13)
if(!silent) {cat(differenz); cat("\n")}
return(list("Werte" = werte, "Differenz"=differenz))
}
ergebnis <- mittelwerte(1:3, 2:4, 3:5)
ergebnis <- mittelwerte(1:3, 2:4, 3:5, silent = TRUE)
Code: Alles auswählen
mittelwerte <- function(input1, input2, input3){
mittelwert1 <- mean(input1)
mittelwert2 <- mean(input2)
mittelwert3 <- mean(input3)
differenz12 <- mittelwert1 - mittelwert2
differenz13 <- mittelwert1 - mittelwert3
werte <- cbind(mittelwert1, mittelwert2, mittelwert3)
differenz <- paste("Die Differenz zwischen Wert 1 & Wert 2 beträgt", differenz12, "\nDie Differenz zwischen Wert 1 und Wert 3 beträgt", differenz13)
result <- list("Werte" = werte, "Differenz"=differenz)
class(result) <- "mwresult"
return(result)
}
print.mwresult <- function(r) {
cat("Ergebnis eines dreifachen Mittelwertvergleichs:\n")
cat("Mittelwerte:\n")
cat(r[[1]])
cat("\nFreitext:\n")
cat(r[[2]])
cat("Ergebnis zuende\n\n")
}
ergebnis <- mittelwerte(1:3, 2:4, 3:5)
ergebnis
Bernhard