Seite 1 von 1

If-Bedingung in einer For-Schleife

Verfasst: Di Jan 16, 2018 1:09 pm
von Regression
Hallo noch mal,

bin wieder auf ein Problem gestoßen, was vermutlich recht trivial ist:

angenommen ich habe folgendes gegeben:

Code: Alles auswählen

Zeit<-c(1:10)
Wert<- c(5,2,1,4,2,1,1,0,9,8)
myData<-data.frame(a,b)
nun möchte ich in ein neues Vektor v die zugehörige Zeit speichern, wo Wert<Wert[i+1]

Mein Ansatz bis jetzt ist:

Code: Alles auswählen

for(i in 1:length(myData$Zeit)){
if(myData$Wert[i] < myData$Wert[i+1]){
v<-c(v,myData$Zeit[i])}
}
Es kommt eine Fehlermeldung
Error in if (Bedingung) :
missing value where TRUE/FALSE needed
Allerdings, liefert die if-Bedingung außerhalb der Schleife wie etwa:

Code: Alles auswählen

if(myData$Wert[3] < myData$Wert[4]){
v<-c(v,myData$Zeit[3])}
das gewünschte Ergebnis.

Nun bin ich verwirrt, ich vermute es liegt am Syntax.
Denn die if-Bedingung liefert ja einen Boolschen-Wert.

Besten Dank im Voraus!!!

Re: If-Bedingung in einer For-Schleife

Verfasst: Di Jan 16, 2018 3:27 pm
von bigben
Hallo Regression,
Regression hat geschrieben: Di Jan 16, 2018 1:09 pm

Code: Alles auswählen

Zeit<-c(1:10)
Wert<- c(5,2,1,4,2,1,1,0,9,8)
myData<-data.frame(a,b)
An dieser Stelle ist myData$Zeit ebenso wie myData$Wert nicht definiert worden. Da Du die später benutzt, solltest Du sie vorher definieren. In Deiner R Session scheinen diese Spalten definiert zu sein. Im Beispiel sind sie es nicht.
nun möchte ich in ein neues Vektor v die zugehörige Zeit speichern, wo Wert[ i ]<Wert[i+1]

Dafür solltest Du Dir überlegen, für welche i das möglich ist, und wann ein i zu groß dafür ist.

Code: Alles auswählen

for(i in 1:length(myData$Zeit)){...
ist das die richtige Obergrenze für i, wenn Du später auf i+1 zugreifen möchtest?

LG,
Bernhard

Re: If-Bedingung in einer For-Schleife

Verfasst: Do Jan 18, 2018 6:47 am
von Regression
Du hast vollkommen Recht :roll:
Danke

Re: If-Bedingung in einer For-Schleife

Verfasst: Do Jan 18, 2018 7:59 am
von bigben
R hatte mal wieder Recht. 8-)