& oder && bei if-Funktionen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
dormilona
Beiträge: 8
Registriert: Sa Aug 15, 2020 2:46 pm

& oder && bei if-Funktionen

Beitrag von dormilona »

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
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: & oder && bei if-Funktionen

Beitrag von jogo »

Hallo Johanna,

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)]
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
dormilona
Beiträge: 8
Registriert: Sa Aug 15, 2020 2:46 pm

Re: & oder && bei if-Funktionen

Beitrag von dormilona »

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
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: & oder && bei if-Funktionen

Beitrag von jogo »

Hallo Johanna,
dormilona hat geschrieben: So Jan 24, 2021 4:31 pm Leider habe ich nicht wirklich verstanden, warum in deinem Beispiel "&&" nicht funktioniert.
Könntest du noch einmal versuchen, mir das zu erklären?
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)
(es gibt nicht mal eine Fehlermeldung)
Jedoch verarbeitet && nur das jeweils erste Element der beiden Vektoren, so dass

Code: Alles auswählen

x[(x > 3) && (x < 7)] ## x[c(FALSE)] 
nicht das Gwünschte liefert, wenn Du eigentlich

Code: Alles auswählen

x[(x > 3) & (x < 7)]
haben wolltest.

Gruß, Jörg
dormilona
Beiträge: 8
Registriert: Sa Aug 15, 2020 2:46 pm

Re: & oder && bei if-Funktionen

Beitrag von dormilona »

Lieber Jörg,
klasse danke, das war hilfreich! Kannst du auch mir das auch noch für die if-Funktion erklären?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: & oder && bei if-Funktionen

Beitrag von jogo »

Hallo Johanna,

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
Und jetzt noch mal die Fraga für Dich:
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)
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"
dormilona
Beiträge: 8
Registriert: Sa Aug 15, 2020 2:46 pm

Re: & oder && bei if-Funktionen

Beitrag von dormilona »

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 ?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: & oder && bei if-Funktionen

Beitrag von jogo »

dormilona hat geschrieben: Mo Jan 25, 2021 10:12 am 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 ?
nein, && nimmt nur das erste Element :!: ... und weiter nichts.
dormilona
Beiträge: 8
Registriert: Sa Aug 15, 2020 2:46 pm

Re: & oder && bei if-Funktionen

Beitrag von dormilona »

Okay, vielen Dank, Jörg!
Antworten