If-Bedingung in einer For-Schleife

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

Moderatoren: EDi, jogo

Antworten
Regression
Beiträge: 48
Registriert: Mo Jan 15, 2018 9:57 am

If-Bedingung in einer For-Schleife

Beitrag von Regression » Di Jan 16, 2018 1:09 pm

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!!!

bigben
Beiträge: 626
Registriert: Mi Okt 12, 2016 9:09 am

Re: If-Bedingung in einer For-Schleife

Beitrag von bigben » Di Jan 16, 2018 3:27 pm

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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

Regression
Beiträge: 48
Registriert: Mo Jan 15, 2018 9:57 am

Re: If-Bedingung in einer For-Schleife

Beitrag von Regression » Do Jan 18, 2018 6:47 am

Du hast vollkommen Recht :roll:
Danke

bigben
Beiträge: 626
Registriert: Mi Okt 12, 2016 9:09 am

Re: If-Bedingung in einer For-Schleife

Beitrag von bigben » Do Jan 18, 2018 7:59 am

R hatte mal wieder Recht. 8-)
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast