ifelse()

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

Moderatoren: EDi, jogo

Antworten
forenthomas

ifelse()

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

Re: ifelse()

Beitrag 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
Benutzeravatar
student
Beiträge: 747
Registriert: Fr Okt 07, 2016 9:52 am

Re: ifelse()

Beitrag von student »

Hallo Thomas,

schau Dir mal die Hilfe zur Funktion an. Dort ist ein ähnliches Konstrukt beschrieben!
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
forenthomas

Re: ifelse()

Beitrag 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
Antworten