Fehler: Alle Argumente müssen dieselben Länge haben

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Gottchen
Beiträge: 20
Registriert: Sa Mai 16, 2020 7:22 pm

Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von Gottchen »

Hallo liebe Leute, dies ist bis jetzt mein gesamter Code für mein Projekt:

Code: Alles auswählen

data.csv <- read.csv2("henderson_replication_data1.csv", na = "NA")
install.packages(pwr)
library(pwr)
pwr.anova.test(k=3, f=0.25, sig.level=0.05, power=0.95)
pwr.anova.test(k=3, n=139, f=0.25, sig.level=0.05)
pwr.anova.test(k=3, n=29.33333333333, f=0.25, sig.level=0.05)
StrongMixed <- "3 3 1 -2 2 1 2 -1 2 -3 2 -1 -1 0 0 0 2 -2 2 0 1 -2 1 1 3 0 0 2 -1 1 -1 0 1 1 3 -1 -3 -3 -1 3 0 -1 -2 -1 -1 1 -1 -3 -1 3 1 2 2 1 -3 3 0 2 0 2 2 3 1 0 1 0 -1 2 2 1 -2 -1 -1 1 -2 2 3 0 1 0 -2 3 1 2 -2 -2 2 3"
NotTorn <- "-3 3 -2 2 2 3 2 -2 2 3 1 -1 -1 -1 0 -2 2 -2 2 2 2 1 3 -1 -1 -2 -2 -3 0 1 -1 2 3 1 1 -2 -3 3 -1 -3 -2 -2 -2 -2 -1 1 -1 -3 -1 0 3 2 2 -1 -3 0 2 1 -1 -1 -2 1 1 -2 -2 -1 1 1 -2 2 -3 -1 -1 2 -3 2 0 -1 2 0 -3 -3 -2 -2 -3 -2 -3 3"
Indecisive <- "-3 3 -1 -3 1 1 1 1 1 -1 1 0 -1 -1 0 -2 3 -2 2 2 1 0 1 2 -3 2 -2 -3 0 1 -1 2 1 NA 2 1 -3 -1 0 -3 -2 -2 -2 -2 -1 NA -1 -3 -2 -2 1 1 1 0 -3 -2 2 1 -1 -1 3 1 -1 -2 -1 -1 0 1 -3 1 -2 0 0 -1 -2 1 -2 1 -1 1 -2 -3 -1 -3 -2 -2 -3 3"
Einstellung <- data.frame(
  StrongMixed=as.numeric(strsplit(StrongMixed, " ")[[1]]),
  NotTorn=as.numeric(strsplit(NotTorn, " ")[[1]]),
  Indecisive=as.numeric(strsplit(Indecisive, " ")[[1]]))
Einstellung$new <- rowMeans(mscstart, na.rm=TRUE)
Einstellung
data.csv $Gender <- factor (data.csv $Gender, labels=c ( "male" , "female" ))
dataf <-dplyr :: filter (data.csv,Gender == "female" )
datam <-dplyr :: filter (data.csv,Gender == "male" )
boxplot (data.csv $Age ~ data.csv $Gender, main= "Alterstruktur der Geschlechter in der Stichprobe" ,  xlab= "Geschlecht" , ylab= "Alter in Jahren" , col=c ( "blue" , "red" ))
boxplot (data.csv $Age ~ data.csv $Gender, plot= "F" )
table (data.csv $Gender,data.csv $Age)
hist (dataf$Age, plot= "F" )
hist (datam $Age, plot= "F")
data.csv$Age1 <- cut(data.csv$Age,breaks=c(18,22,24,26,30)
agesummary <- table(data.csv$Gender,data.csv$Age1)
chisq.test(table(data.csv$Gender,data.csv$Age1)) 
Das Problem das in den letzten Zeilen auftritt, also in:

Code: Alles auswählen

data.csv$Age1 <- cut(data.csv$Age,breaks=c(18,22,24,26,30)
agesummary <- table(data.csv$Gender,data.csv$Age1)
chisq.test(table(data.csv$Gender,data.csv$Age1)) 
ist dieses hier:

Code: Alles auswählen

> data.csv$Age1 <- cut(data.csv$Age,breaks=c(18,22,24,26,30)
+                      agesummary <- table(data.csv$Gender,data.csv$Age1)
Fehler: unerwartetes Symbol in:
"data.csv$Age1 <- cut(data.csv$Age,breaks=c(18,22,24,26,30)
                     agesummary"
>                      agesummary <- table(data.csv$Gender,data.csv$Age1)
Fehler in table(data.csv$Gender, data.csv$Age1) : 
  alle Argumente müssen die selbe Länge haben
>                      chisq.test(agesummary)                     
Fehler in is.data.frame(x) : Objekt 'agesummary' nicht gefunden
Ich kann mir gar nicht ausmalen, woran das liegen kann. Ich sehe mit dem Kommando length, dass Gender: 88 und Age1: 0 lang ist. Deshalb hat wohl irgendwas mit Age1 nicht funktioniert. Eine Woche vorher ging dies zumindest noch. Da trat das Problem erst bei dem Chi-Quadrat-Test auf, nämlich so:

Code: Alles auswählen

> chisq.test(agesummary)
Pearson's Chi-squared test
data:  agesummary
X-squared = NaN, df = 3, p-value = NA
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von ruedi_br »

Für mich fehlt in der Zeile
data.csv$Age1 <- cut(data.csv$Age,breaks=c(18,22,24,26,30)
die schließende Klammer.
VG
Ruedi
fortune(111)
Gottchen
Beiträge: 20
Registriert: Sa Mai 16, 2020 7:22 pm

Re: Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von Gottchen »

Uff, danke Dir! War wohl der berüchtigte Flüchtigkeitsfehler. Mir ist gerade ein anderes Problem aufgefallen:

Code: Alles auswählen

> Einstellung <- rowMeans(mscstart, na.rm=TRUE)
Fehler in is.data.frame(x) : Objekt 'mscstart' nicht gefunden
Dieser Fehler ist vor einer Woche genau so nicht aufgetreten. Ich habe keine Ahnung, warum das Objekt mscstart jetzt nicht gefunden wird. Irgendeine Idee? Was ich mir vorstellen könnte ist, dass ich entweder ein dazu benötigtes package nicht installiert habe oder dass ich bei rowMeans(mscstart, na.rm=TRUE) "mscstart" mit "Einstellung" austauschen muss und mscstart keine funktionelle Bedeutung, sondern nur als Name dient und ich den irgendwie von einem alten Code drin gelassen haben. Tu ich das, kommt folgendes raus:

Code: Alles auswählen

> Einstellung$new <- rowMeans(Einstellung, na.rm=TRUE)
Fehler in rowMeans(Einstellung, na.rm = TRUE) : 'x' muss numerisch sein
Außerdem ist auch eine neue Warnmeldung aufgetreten, die vorher auch noch nicht aufgetreten war (keine Ahnung, was passiert ist, dass Teile des Codes auf einmal nicht mehr richtig funktionieren), und zwar:

Code: Alles auswählen

> Einstellung <- data.frame(
+   StrongMixed=as.numeric(strsplit(StrongMixed, " ")[[1]]),
+   NotTorn=as.numeric(strsplit(NotTorn, " ")[[1]]),
+   Indecisive=as.numeric(strsplit(Indecisive, " ")[[1]]))
Warnmeldung:
In data.frame(StrongMixed = as.numeric(strsplit(StrongMixed, " ")[[1]]),  :
  NAs durch Umwandlung erzeugt
Was bedeutet diese Warnmeldung?

Ich bin dankbar für jede Hilfe!
Zuletzt geändert von Gottchen am Mi Mai 27, 2020 7:46 pm, insgesamt 1-mal geändert.
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von bigben »

Was denkst Du denn, wo mscstart herkommen sollte? Das muss doch für Dich inhaltlich etwas bedeuten.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Gottchen
Beiträge: 20
Registriert: Sa Mai 16, 2020 7:22 pm

Re: Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von Gottchen »

Ich glaube ich habe den Namen mscstart einfach weiter verwendet, weil ich ihn vorher im Code benutzt habe, da mir ein User hier ein solches mscstart im Code geschickt hatte. Habe dann wahrscheinlich vergessen mscstart mit Einstellung auszutauschen. Mscstart ist ja kein Befehl. Trotzdem kommt ja dann das dieses Problem raus:

Code: Alles auswählen

> Einstellung$new <- rowMeans(Einstellung, na.rm=TRUE)
Fehler in rowMeans(Einstellung, na.rm = TRUE) : 'x' muss numerisch sein
.
Ist "Einstellung" mein x in diesem Falle? Einstellung müsste eigentlich numerisch sein. Könnte ich sonst as.numeric(Einstellung) anwenden?
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von bigben »

Einstellung wird weiter oben aus mscstart errechnet. Weil Du oben kein mscstart hattest, hast Du hier kein Einstellung.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Gottchen
Beiträge: 20
Registriert: Sa Mai 16, 2020 7:22 pm

Re: Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von Gottchen »

Wie meinst Du das? Kannst Du genauer erläutern, vielleicht auch mit Verweis der bezüglichen Codezeilen?
Einstellung erschaffe ich hier, da ist mscstart noch gar nicht im Spiel:

Code: Alles auswählen

Einstellung <- data.frame(
  StrongMixed=as.numeric(strsplit(StrongMixed, " ")[[1]]),
  NotTorn=as.numeric(strsplit(NotTorn, " ")[[1]]),
  Indecisive=as.numeric(strsplit(Indecisive, " ")[[1]]))
Erst hier tritt das Problem auf:

Code: Alles auswählen

Einstellung$new <- rowMeans(mscstart, na.rm=TRUE)
Einstellung
Ich weiß auch nicht, woher das mscstart kommt. Ich denke dort sollte anstatt mscstart Einstellung stehen, aber trotzdem wird dann x als nicht numerisch erklärt. Wie eigentlich ja schon gesagt. Hast Du dir meinen kompletten Code für das gesamte Projekt in meinem ersten Beitrag in diesem Thread angeschaut?
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler: Alle Argumente müssen dieselben Länge haben

Beitrag von bigben »

In Deinem Beitrag von 5:05 PM schreibst Du als erste Fehlermeldung:

Code: Alles auswählen

> Einstellung <- rowMeans(mscstart, na.rm=TRUE)
Fehler in is.data.frame(x) : Objekt 'mscstart' nicht gefunden
Darauf habe ich mich bezogen: Hier wird Einstellung als mscstart erstellt. Da ist mir nicht aufgefallen, dass es die hier angegebene Codezeile in Deinem längeren Codestück vorher (das ich mir ob der Länge nicht ganz durchgelesen habe) gar nicht vorkommt.

Das hier geht bei mir ohne Fehlermeldung durch

Code: Alles auswählen

StrongMixed <- "3 3 1 -2 2 1 2 -1 2 -3 2 -1 -1 0 0 0 2 -2 2 0 1 -2 1 1 3 0 0 2 -1 1 -1 0 1 1 3 -1 -3 -3 -1 3 0 -1 -2 -1 -1 1 -1 -3 -1 3 1 2 2 1 -3 3 0 2 0 2 2 3 1 0 1 0 -1 2 2 1 -2 -1 -1 1 -2 2 3 0 1 0 -2 3 1 2 -2 -2 2 3"
NotTorn <- "-3 3 -2 2 2 3 2 -2 2 3 1 -1 -1 -1 0 -2 2 -2 2 2 2 1 3 -1 -1 -2 -2 -3 0 1 -1 2 3 1 1 -2 -3 3 -1 -3 -2 -2 -2 -2 -1 1 -1 -3 -1 0 3 2 2 -1 -3 0 2 1 -1 -1 -2 1 1 -2 -2 -1 1 1 -2 2 -3 -1 -1 2 -3 2 0 -1 2 0 -3 -3 -2 -2 -3 -2 -3 3"
Indecisive <- "-3 3 -1 -3 1 1 1 1 1 -1 1 0 -1 -1 0 -2 3 -2 2 2 1 0 1 2 -3 2 -2 -3 0 1 -1 2 1 NA 2 1 -3 -1 0 -3 -2 -2 -2 -2 -1 NA -1 -3 -2 -2 1 1 1 0 -3 -2 2 1 -1 -1 3 1 -1 -2 -1 -1 0 1 -3 1 -2 0 0 -1 -2 1 -2 1 -1 1 -2 -3 -1 -3 -2 -2 -3 3"
Einstellung <- data.frame(
  StrongMixed=as.numeric(strsplit(StrongMixed, " ")[[1]]),
  NotTorn=as.numeric(strsplit(NotTorn, " ")[[1]]),
  Indecisive=as.numeric(strsplit(Indecisive, " ")[[1]]))
Einstellung$new <- rowMeans(Einstellung, na.rm=TRUE)
Einstellung
Also: Wenn kein Bezug zu mscstart, dann auch kein Fehler.
Hast Du dir meinen kompletten Code für das gesamte Projekt in meinem ersten Beitrag in diesem Thread angeschaut?
Nein, ist mir zu lange. Die ganzen ANOVA-Poweranalysen haben ja mit der Frage nichts zu tun, aber die erste von Dir genannte Fehlermeldung weist darauf hin, dass Kommandos ausgeführt wurden, die in diesem Code nicht stehen. Deshalb ist es so wichtig, minimale reproduzierbare Beispiele zu erstellen. Bitte mach doch ein minimales Beispiel, das bei uns lauffähig ist und das den Fehler auslöst.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten