Seite 4 von 4

Re: Identifizierung der Variablen mit dem höchsten Wert

Verfasst: Do Okt 04, 2018 5:35 pm
von jogo
hm, ich sehe es momentan nicht, woran es liegt.
Also werden wir wohl das with() auflösen und qualifizierte Namen verwenden:

Code: Alles auswählen

Tabelle.OCAI$POfitvor <- NA
i <- Tabelle.OCAI$domCul == "A"; Tabelle.OCAI$POfitvor[i] <- Tabelle.OCAI$OCAIA[i]
i <- Tabelle.OCAI$domCul == "B"; Tabelle.OCAI$POfitvor[i] <- Tabelle.OCAI$OCAIB[i]
i <- Tabelle.OCAI$domCul == "C"; Tabelle.OCAI$POfitvor[i] <- Tabelle.OCAI$OCAIC[i]
i <- Tabelle.OCAI$domCul == "D"; Tabelle.OCAI$POfitvor[i] <- Tabelle.OCAI$OCAID[i]
rm(i)
Gruß, Jörg
p.s.:
aber Deinen Workspace hast Du Dir trotzdem schon gut zugekachelt. :?

Re: Identifizierung der Variablen mit dem höchsten Wert

Verfasst: Fr Okt 05, 2018 12:03 pm
von NeugierundOrga
Hallo Jörg,

super, das hat funktioniert!

Ich habe dann den zweiten Teil wie folgt ausgeführt:

Code: Alles auswählen

Tabelle.OCAI$POfitstr<- NA

i <- Tabelle.OCAI$domCul == "A"; Tabelle.OCAI$POfitstr[i] <- (Tabelle.OCAI$idOCAIA[i]-Tabelle.OCAI$OCAIA[i])
i <- Tabelle.OCAI$domCul == "B"; Tabelle.OCAI$POfitstr[i] <- (Tabelle.OCAI$idOCAIB[i]-Tabelle.OCAI$OCAIB[i])
i <- Tabelle.OCAI$domCul == "C"; Tabelle.OCAI$POfitstr[i] <- (Tabelle.OCAI$idOCAIC[i]-Tabelle.OCAI$OCAIC[i])
i <- Tabelle.OCAI$domCul == "D"; Tabelle.OCAI$POfitstr[i] <- (Tabelle.OCAI$idOCAID[i]-Tabelle.OCAI$OCAID[i])
rm(i)
Alles ist schick und die einzelnen Zahlen stimmen diesmal auch! :-)

Dabei ist mir aufgefallen, dass ich jede Zeile einzeln als Rechenfunktion ausführen kann und die Werte jeweils für die entsprechend ausgewählten Zeilen in die Tabelle geschrieben werden. Wofür brauche ich dann am Ende noch rm(i)?

Das nur als Bonusfragen, aber ich bin jetzt superglücklich, dass ich endlich weitermachen kann!

Tausend Dank!
Karen

Re: Identifizierung der Variablen mit dem höchsten Wert

Verfasst: Fr Okt 05, 2018 12:08 pm
von jogo
Hallo Karen,
NeugierundOrga hat geschrieben: Fr Okt 05, 2018 12:03 pm Alles ist schick und die einzelnen Zahlen stimmen diesmal auch! :-)
prima.
Dabei ist mir aufgefallen, dass ich jede Zeile einzeln als Rechenfunktion ausführen kann und die Werte jeweils für die entsprechend ausgewählten Zeilen in die Tabelle geschrieben werden. Wofür brauche ich dann am Ende noch rm(i)?
Um den Workspace nicht zuzuschruzen. (lange Antwort: das i enthält am Ende den logical Index für den D-Fall. Dieser Fall ist gegenüber den anderen drei nichts besonderes, oder? Damit verliert das i seine Bedeutung: Zeit zum Aufräumen, damit man sich nicht zwanzig Codezeilen später wundert: wozu war dieses i gut?)
Wenn das Codestück allerdings innerhalb einer Funktion ist, endet die Sichtbarkeit von i automatisch und man hätte gut auf rm(i) verzichten können.

Gruß, Jörg

Re: Identifizierung der Variablen mit dem höchsten Wert

Verfasst: Fr Okt 05, 2018 12:47 pm
von NeugierundOrga
Hallo Jörg,
Dabei ist mir aufgefallen, dass ich jede Zeile einzeln als Rechenfunktion ausführen kann und die Werte jeweils für die entsprechend ausgewählten Zeilen in die Tabelle geschrieben werden. Wofür brauche ich dann am Ende noch rm(i)?
Um den Workspace nicht zuzuschruzen. (lange Antwort: das i enthält am Ende den logical Index für den D-Fall. Dieser Fall ist gegenüber den anderen drei nichts besonderes, oder? Damit verliert das i seine Bedeutung: Zeit zum Aufräumen, damit man sich nicht zwanzig Codezeilen später wundert: wozu war dieses i gut?)
Wenn das Codestück allerdings innerhalb einer Funktion ist, endet die Sichtbarkeit von i automatisch und man hätte gut auf rm(i) verzichten können.
Wieder was gelernt!
Nochmal Danke!
Karen

Re: Identifizierung der Variablen mit dem höchsten Wert

Verfasst: Sa Okt 06, 2018 12:15 pm
von jogo
Hallo Karen,

für das Lernen habe ich hier noch etwas zusammen geschrieben. Im Englischen wird der Begriff scoping verwendet, im Deutschen heißt es Gültigkeitsbereich eines Bezeichners (einer Variablen bzw. eines Objektes).

Code: Alles auswählen

### Test scoping, bitte in einer frischen R-Session ausführen

i  ## Fehler, weil i noch nicht existiert

f <- function() { i=5 } ### eine Funktionsdefinition, innen wird i verwendet

i ## immer noch Fehler

f()  ## Funktionsaufruf liefert als Ergebniswert den Wert des als letztes berechneten Ausdruck inerhalb der Funktion

i ## trotzdem ist im Workspace i immer noch nicht definiert

i <- "hallo" ## so, jetzt ist i definiert

f() ## nochmal Funktionsaufruf, welchen Wert hat danach i ?

i ## das i im Workspace ist gut vor allem geschützt, was in der Funktion passiert

### wenn man etwas Anderes möchte, dann so:
i <- f()

i ## klar, wegen der vorherigen Zuweisung
R bietet im bezüglich der Gültigkeit der Bezeichner größtmögliche Sicherheit für das Programmieren - natürlich nur, wenn man nicht irgendwelche Konstrukte einsetzt, die diese Sicherheit untergraben.

Gruß, Jörg

Re: Identifizierung der Variablen mit dem höchsten Wert

Verfasst: Di Okt 09, 2018 10:56 am
von NeugierundOrga
Hallo Jörg,

vielen Dank für diese Zusammenfassung und Deine ganze Hilfe!

Karen