Ich möchte eine Funktion schreiben, die zwei kategoriale Variablen nehmen und Mosaikplot, Zählertabelle, Zeilenprozentsatz erstellen und schließlich einen Chi-Quadrat-Test anzeigen. Angenommen, ich habe Daten über den Familienstand (verheiratet/unverheiratet) und ob sie rauchen (ja/nein) oder nicht. Ich möchte, dass es ein Mosaikdiagramm dieser zwei Variablen erstellt, dann zeige ich die Zählungen/Reihenanteile dieser zwei Variablen und führe schließlich einen Chi-Quadrat-Test durch.Ausführen mehrerer Aufgaben mit einer Funktion in R
Ich habe folgendes versucht:
Fnct <- function(x, y) {
# Will create mosaic plot, but the labels show up incorrectly
plot <- mosaicplot(~x + y, color=TRUE, main = "Mosaic Plot", xlab = x, ylab = y)
#creates a 2by2 table and stores it in my table
mytable <- table(x, y)
mytable2 <- prop.table(mytable, 1)
chi <- chisq.test(mytable)
return(c(plot, mytable2, chi))
}
Fnct(Data$Marital, Data$Smoker)
Wenn ich die Daten auszugeben, es Ausgabe der Mosaikplot tut, aber die Etiketten sind falsch. Sie wiederholen wiederholt die Behandlungsstufen, nicht nur den Spaltennamen. Es gibt auch keine Zählungen oder Chi-Quadrat-Tests richtig aus. Was mache ich falsch?
Wir würden uns freuen, wenn Sie zu helfen, ein hinzufügen [minimal reproduzierbares Beispiel] (http://stackoverflow.com/a/5963610/2437479). – shreyasgm
Dies ist eine unordentliche Funktion. Funktionen sollten wirklich eine Sache zurückgeben, entweder als Nebeneffekt (z. B. Plotten) oder als Objekt. Das Zurückgeben einer Liste von verschiedenen Arten von Objekten wird normalerweise ein Schmerz sein, da du sie auseinander ziehen musst, um irgendetwas Nützliches mit ihnen zu tun. Es ist besser, mehr als eine Funktion zu machen, es sei denn, du machst effektiv eine ganze Klasse. – alistaire
@alistaire Ich stimme dem weitgehend zu, aber ich denke, wenn Sie eine QnD-Exploration in einem Dataset durchführen, kann eine Convenience-Funktion, wie sie das OP zu erstellen versucht, sehr nützliche Ergebnisse liefern. Ich bin mir nicht sicher, was der Zweck des OP ist, aber ich habe fxns wie diese verwendet, wenn ich anfange, meine Hände mit Daten schmutzig zu machen (was ich OPs Anwendungsfall dachte). – bouncyball