Seite 1 von 1

Fehlermeldung im for loop

Verfasst: Fr Nov 20, 2020 5:53 pm
von Lii
Hey :)
Ich bin noch nicht besonders weit in R und hänge gerade immer wieder im for loop.
Ich bekomme immer wieder die gleichen Fehlermeldungen, wenn ich in den Loop etwas längere If-Bedigungen oder die Funktion Switch einbaue, aber halt nicht immer. Teilweise funktionieren meine Loops ganz wunderbar; aber manchmal eben nicht, und ich kann irgendwie nicht den Unterschied zwischen beiden Codes erkennen.

Ich bekomme die Fehlermeldung, es gäbe eine unerwartete { oder = (und die Klammer benutzt man ja im for Loop und in der if Bedingung). Ich dachte, irgendwie kann R die offene "{" Klammer nicht zu der geschlossenen "}" Klammer zuordnen (weil ich auch beim Schreiben manchmal diese kleine Fehlermeldung bekomme, es gäbe ein "unexpected Token {", aber die verschwindet dann auch wieder). Der Code stimmt nämlich; es gibt keine Klammer zu viel oder so; und es passiert auch irgendwie nur manchmal. Ich dachte, vielleicht sind die Einrückungen wichtig, deshalb hab ich auch auf die geachtet. Normalerweise schreibe ich den Code, setze die Klammer ein ({), und dann mache ich einen Zeilenumbruch; die geschlossene Klammer, die dann dazu entstanden ist, wird dann direkt in die dritte Zeile gerückt.
Folgendes hab ich schon probiert:

1. Ein funktionierendes For Loop kopiert und dann das, was ich eigentlich haben will, in das Loop reingeschrieben und den Rest gelöscht; damit die Klammern nicht verschoben werden.
2. Das Loop selbst geschrieben und als ich dann "{" verwendet habe und gleich die zugehörige "}" automatisch dazu aufgetaucht ist, hab ich die Befehle, die ich vorher manuell eingetippt hatte, einfach per copy&paste zwischen die Klammern gesetzt.
3. Den Cursor hinter die Klammern, die als unexpected markiert wurden, bewegt, und die Zeilenumbrüche dahinter manuell gelöscht und dann wieder manuell neu gemacht.

Ich hab hier ein Beispiel, in dem ich diese Fehlermeldung bekommen hab:

Code: Alles auswählen

for (i in (1:n)){
  if (Noquote[i,2]=="Frau") {
    Noquote[i,14] = pref.quota[i]-12+Unterstuetzung[i]/100
  }
  else 
    Noquote[i,14] = pref.quota[i]+10 + Unterstuetzung[i]/100
  if(Noquote[i,9] = "Stereotyp" & Noquote[i,2]="Frau"){
    Noquote[i,14]=Noquote[i,14]-2
  }
  if(Noquote[i,9]="Stereotyp" & Noquote[i,2]="Mann"){
    Noquote[i,14]=Noquote[i,14]+2
  }
  if(Noquote[i,9]="Nicht-Stereotyp" & Noquote[i,2]="Frau"){
    Noquote[i,14]=Noquote[i,14]+2
  }
  if(Noquote[i,9]="Nicht-Stereotyp" & Noquote[i,2]="Mann"){
    Noquote[i,14]=Noquote[i,14]-2
  }
} 
Und der Output:

Code: Alles auswählen

> for (i in (1:n)){
+   if (Noquote[i,2]=="Frau") {
+     Noquote[i,14] = pref.quota[i]-12+Unterstuetzung[i]/100
+   }
+   else 
+     Noquote[i,14] = pref.quota[i]+10 + Unterstuetzung[i]/100
+   if(Noquote[i,9] = "Stereotyp" & Noquote[i,2]="Frau"){
Fehler: Unerwartete(s) '=' in:
"    Noquote[i,14] = pref.quota[i]+10 + Unterstuetzung[i]/100
  if(Noquote[i,9] ="
>     Noquote[i,14]=Noquote[i,14]-2
>   }
Fehler: Unerwartete(s) '}' in "  }"
>   if(Noquote[i,9]="Stereotyp" & Noquote[i,2]="Mann"){
Fehler: Unerwartete(s) '=' in "  if(Noquote[i,9]="
>     Noquote[i,14]=Noquote[i,14]+2
>   }
Fehler: Unerwartete(s) '}' in "  }"
>   if(Noquote[i,9]="Nicht-Stereotyp" & Noquote[i,2]="Frau"){
Fehler: Unerwartete(s) '=' in "  if(Noquote[i,9]="
>     Noquote[i,14]=Noquote[i,14]+2
>   }
Fehler: Unerwartete(s) '}' in "  }"
>   if(Noquote[i,9]="Nicht-Stereotyp" & Noquote[i,2]="Mann"){
Fehler: Unerwartete(s) '=' in "  if(Noquote[i,9]="
>     Noquote[i,14]=Noquote[i,14]-2
>   }
Fehler: Unerwartete(s) '}' in "  }"
> }
Fehler: Unerwartete(s) '}' in "}"
Ich hoffe, mir fehlt hier einfach irgendein Verstädnnis von den Funktionen oder ein Tippfehler ist drin; ich kann nämlich überhaupt nicht erkennen, was an dem Code falsch sein soll... schon mal vorab danke und liebe Grüße :)

Re: Fehlermeldung im for loop

Verfasst: Fr Nov 20, 2020 6:03 pm
von Athomas
Der Vergleichsoperator ist "=="!

Re: Fehlermeldung im for loop

Verfasst: Fr Nov 20, 2020 6:16 pm
von Lii
Hätte mir die Lösung komplexer vorgestellt; wo ich schon keine Antwort von der Dozentin bekommen hab :-/...
Danke für die schnelle Lösung! Klappt jetzt :mrgreen: