Schleife mit zwei Operationen

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

Moderatoren: EDi, jogo

Antworten
wintwin111

Schleife mit zwei Operationen

Beitrag von wintwin111 »

Hallo,

ich habe ein Problem mit einer Schleife. Die Ausgangssituation sind zwei Vektoren

Code: Alles auswählen

a<-c(1:10)
b<-c(0.5*(1:10))
Nun soll die Schleife folgende Berechnungen durchführen:

1.Iteration:

0.5*a[1] -> in Vektor c speichern
b[1]-a[1] -> in Vektor d speichern

2.Iteration:

0.5*d[1] -> in Vektor c speichern
b[2]-d[1] -> in Vektor d speichern

usw.

Nun habe ich folgende Schleife versucht um dieses Problem zu lösen:

Code: Alles auswählen

a<-c(1:10)
b<-c(0.5*(1:10))
temp<-0
temp<-a
N<-10
c<-numeric(0)
d<-numeric(0)
for(i in 1:N){
c<-c(d,0.5*res[1])
d<-oos[i]-c[i]
temp<-c(tail(d,1),head(temp,-1))}
Die ersten 5 Werte für c und d per Hand ausgerechnet:

c = 0.5, 0, 0.5, 0.5, 0.75
d = 0, 1, 1, 1.5, 1.75

Bei meiner Schleife kommt folgendes heraus:

Code: Alles auswählen

c
[1]  NA 0.5

d
 [1]  NA  NA  NA  NA  NA  NA  NA  NA 0.5 0.0
Kann mir jemand erklären, wo mein Fehler liegt?

Vielen Dank im Voraus und viele Grüße,

wintwin111
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Schleife mit zwei Operationen

Beitrag von EDi »

Die ersten 5 Werte für c und d per Hand ausgerechnet:

c = 0.5, 0, 0.5, 0.5, 0.75
d = 0, 1, 1, 1.5, 1.75
1.Iteration:

0.5*a[1] -> in Vektor c speichern
b[1]-a[1] -> in Vektor d speichern
a [1] = 1
b [1] = 1 * 0.5 = 0.5
c = 0.5*1 =0.5
d = 0.5 - 1 = -0.5

:?: Passt irgendwie nicht...

Auch verstehe ich nicht das "usw." - wie sieht die dritte iteration aus? Braucht man a [2:10] nicht (wozu ist es dann da?)?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
wintwin111

Re: Schleife mit zwei Operationen

Beitrag von wintwin111 »

Ja das sollte heißen

0.5*a[1] -> in Vektor c speichern
c[1]-b[1] -> in Vektor d speichern

Die dritte Iteration lautet:

0.5*d[2] -> in c speichern
b[3]-c[2] -> in d speichern

Ja a[2:10] wird (erstmal) nicht benötigt.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Schleife mit zwei Operationen

Beitrag von jogo »

wintwin111 hat geschrieben: Di Okt 03, 2017 1:14 pm Ja das sollte heißen:

... -> in Vektor c speichern
... -> in Vektor d speichern

... -> in c speichern
... -> in d speichern
Mir ist nicht klar, in welchem Element von c bzw. d das Ergebnis gespeichert wird.
wintwin111

Re: Schleife mit zwei Operationen

Beitrag von wintwin111 »

Der Reihe nach. Also in der ersten Iteration sollen die Berechnungen in c[1] und d[1] gespeichert werden und dann in der zweiten Iteration d[1] wieder aufgerufen werden
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Schleife mit zwei Operationen

Beitrag von EDi »

wintwin111 hat geschrieben: Di Okt 03, 2017 1:14 pm Ja das sollte heißen

0.5*a[1] -> in Vektor c speichern
c[1]-b[1] -> in Vektor d speichern

Die dritte Iteration lautet:

0.5*d[2] -> in c speichern
b[3]-c[2] -> in d speichern

Ja a[2:10] wird (erstmal) nicht benötigt.
Jetzt passt es gar nicht mehr (zum vorherigen)!?

Bitte nochmal Iteration 1 bis 3 posten.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
wintwin111

Re: Schleife mit zwei Operationen

Beitrag von wintwin111 »

1 Iteration:

0.5*a[1] -> speichern als c[1]
b[1]-c[1] -> speichern als d[1]

2. Iteration:

0.5*d[1] -> speichern in c[2]
b[2]-c[2] -> speichern in d[2]

3.Iteration:

0.5*d[2] -> speichern in c[3]
b[3]-c[3] -> speichern in d[3]
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Schleife mit zwei Operationen

Beitrag von jogo »

Code: Alles auswählen

a <- 1
b <- 0.5 * (1:10)
C <- numeric(10)
D <- numeric(10)
C[1] <- 0.5*a
D[1] <- b[1] - C[1]
for (i in 2:10) {
  C[i] <- 0.5 * D[i-1]
  D[i] <- b[i] - C[i]
}
Antworten