Seite 1 von 1

ifelse()

Verfasst: Fr Aug 25, 2017 9:03 am
von forenthomas
Hallo,

ich mache gerade die ersten Schritte in der Programmierung und bin über

Code: Alles auswählen

> ifelse(x > 0, log(x), NA)
[1]        NA        NA        NA 0.0000000 0.6931472
Warning message:
In log(x) : NaNs produced
gestolpert. Ich frage mich, wie es zu der Warnmeldung kommt. Eigentlich dürfe in der if-Anweisung für negative x-Werte log(x) doch nicht ausgeführt werden, oder?

Gruß, Thomas

Re: ifelse()

Verfasst: Fr Aug 25, 2017 9:11 am
von jogo
Hallo Thomas,

willkommen im Forum!
Das liegt wohl daran, dass R vektoriell arbeitet:
log(x) wird für den gesamten Vektor x berechnet. Dabei entstehen die NaN-Einträge (Not a Number).
Die ifelse()-Funktion führt aber dazu, dass an diesen Stellen NA eingetragen wird.

Code: Alles auswählen

x <- c(-1, -3, 1, 4)
log(x)
ifelse(x > 0, log(x), NA)
Bitte beachte, dass ifelse() kein Konstrukt zur Programmsteuerung ist, sondern ifelse() ist eine Funktion, die drei Argumente verarbeitet.

Gruß, Jörg

Re: ifelse()

Verfasst: Fr Aug 25, 2017 9:12 am
von student
Hallo Thomas,

schau Dir mal die Hilfe zur Funktion an. Dort ist ein ähnliches Konstrukt beschrieben!

Re: ifelse()

Verfasst: Fr Aug 25, 2017 9:50 am
von forenthomas
Hallo Jörg,
jogo hat geschrieben: Fr Aug 25, 2017 9:11 am Bitte beachte, dass ifelse() kein Konstrukt zur Programmsteuerung ist, sondern ifelse() ist eine Funktion, die drei Argumente verarbeitet.
Cool, das macht es logisch. Danke!

Gruß, Thomas