& oder && bei if-Funktionen
& oder && bei if-Funktionen
Hallo zusammen!
Ich habe eine Verständnisfrage zu der Verwendung von "&" und "&&" bei R. Wann verwende ich was?
Folgende Erklärung habe ich gefunden:
"Es gibt zwei Arten von logischen Operatoren: solche, die Vektoren beliebiger Länge annehmen und zurückgeben (elementweise Operatoren: ! , | , & , xor() ) und diejenigen, die nur das erste Element in jedem Argument ( && , || ) auswerten. Die zweite Sortierung wird hauptsächlich als cond Argument für die if Funktion verwendet."
Mir fällt es schwer, mir das konkret vorzustellen und zu verstehen, was damit gemeint ist. Könntet ihr mir hier helfen? Vielleicht mit einem Beispiel?
Das wäre ganz klasse!
Liebe Grüße,
Johanna
Ich habe eine Verständnisfrage zu der Verwendung von "&" und "&&" bei R. Wann verwende ich was?
Folgende Erklärung habe ich gefunden:
"Es gibt zwei Arten von logischen Operatoren: solche, die Vektoren beliebiger Länge annehmen und zurückgeben (elementweise Operatoren: ! , | , & , xor() ) und diejenigen, die nur das erste Element in jedem Argument ( && , || ) auswerten. Die zweite Sortierung wird hauptsächlich als cond Argument für die if Funktion verwendet."
Mir fällt es schwer, mir das konkret vorzustellen und zu verstehen, was damit gemeint ist. Könntet ihr mir hier helfen? Vielleicht mit einem Beispiel?
Das wäre ganz klasse!
Liebe Grüße,
Johanna
Re: & oder && bei if-Funktionen
Hallo Johanna,
hier ein Beispiel:
Auch if(...) kann keinen logical vector verarbeiten (was soll denn getan werden, wenn in einem Element TRUE und in einem anderen FALSE steht?). Deshalb ist innerhalb der Bedingung für if(...) der Operator && empfehlenswert; ansonsten passiert dies:
https://stackoverflow.com/questions/213 ... ter-than-1
Gruß, Jörg
hier ein Beispiel:
Code: Alles auswählen
x <- 1:10
x > 3
(x > 3) & (x < 7) # das geht mit && nicht
x[(x > 3) & (x < 7)]
https://stackoverflow.com/questions/213 ... ter-than-1
Gruß, Jörg
Re: & oder && bei if-Funktionen
Lieber Jörg,
vielen Dank für deine Antwort.
Leider habe ich nicht wirklich verstanden, warum in deinem Beispiel "&&" nicht funktioniert. Ich glaube, ich habe da einen Knoten im Kopf :/
Könntest du noch einmal versuchen, mir das zu erklären?
Vielen Dank,
Johanna
vielen Dank für deine Antwort.
Leider habe ich nicht wirklich verstanden, warum in deinem Beispiel "&&" nicht funktioniert. Ich glaube, ich habe da einen Knoten im Kopf :/
Könntest du noch einmal versuchen, mir das zu erklären?
Vielen Dank,
Johanna
Re: & oder && bei if-Funktionen
Hallo Johanna,
Natürlich kannst Du diesen Code ausführen:
(es gibt nicht mal eine Fehlermeldung)
Jedoch verarbeitet && nur das jeweils erste Element der beiden Vektoren, so dass
nicht das Gwünschte liefert, wenn Du eigentlich
haben wolltest.
Gruß, Jörg
ja, vielleicht hätte ich etwas mehr schreiben sollen. Die Erklärung zu if(...) war ausreichend?
Natürlich kannst Du diesen Code ausführen:
Code: Alles auswählen
x <- 1:10
(x > 3) && (x < 7)
Jedoch verarbeitet && nur das jeweils erste Element der beiden Vektoren, so dass
Code: Alles auswählen
x[(x > 3) && (x < 7)] ## x[c(FALSE)]
Code: Alles auswählen
x[(x > 3) & (x < 7)]
Gruß, Jörg
Re: & oder && bei if-Funktionen
Lieber Jörg,
klasse danke, das war hilfreich! Kannst du auch mir das auch noch für die if-Funktion erklären?
klasse danke, das war hilfreich! Kannst du auch mir das auch noch für die if-Funktion erklären?
Re: & oder && bei if-Funktionen
Hallo Johanna,
ich gebe Dir noch ein Beispiel:
Und jetzt noch mal die Fraga für Dich:
Was meinst Du, welchen Wert y nach folgendem Code haben soll:
?
Für das vielleicht erwartete Ergebnis c(5, 3) gibt es die Funktion ifelse():
Das Konstrukt if (...) ... else ... dient der Steuerung des Programmablaufes, deshalb kann es nur einen Schalter TRUE/FALSE auswerten -- oder hast Du schon mal einen Programmablauf gesehen, der an einer Stelle gleichzeitig in zwei Richtungen verzweigt?
Gruß, Jörg
p.s.:
Das Konstrukt if (...) ... ist gleibedeutend mit if (...) ... else "tue nichts"
ich gebe Dir noch ein Beispiel:
Code: Alles auswählen
if (TRUE) y <- 3 else y <- 5
y
if (FALSE) y <- 3 else y <- 5
y
Was meinst Du, welchen Wert y nach folgendem Code haben soll:
Code: Alles auswählen
if (c(FALSE, TRUE)) y <- 3 else y <- 5
Für das vielleicht erwartete Ergebnis c(5, 3) gibt es die Funktion ifelse():
Code: Alles auswählen
y <- ifelse(c(FALSE, TRUE), 3, 5)
Gruß, Jörg
p.s.:
Das Konstrukt if (...) ... ist gleibedeutend mit if (...) ... else "tue nichts"
Re: & oder && bei if-Funktionen
Ich glaube, nun habe ich es verstanden:
"&&" schaut sich immer erst mal das erste Element an, erst wenn hier ein "true" gefunden wird, wird die Bedingung für das zweite Element geprüft oder? Dann ist das ja quasi schon in sich eine conditional ?
"&&" schaut sich immer erst mal das erste Element an, erst wenn hier ein "true" gefunden wird, wird die Bedingung für das zweite Element geprüft oder? Dann ist das ja quasi schon in sich eine conditional ?
Re: & oder && bei if-Funktionen
nein, && nimmt nur das erste Element ... und weiter nichts.
Re: & oder && bei if-Funktionen
Okay, vielen Dank, Jörg!