Matrix mit for Schleife

Fragen, die sich auf kein spezielles Verfahren beziehen.

Matrix mit for Schleife

Beitragvon Martin1234 » Fr 14. Okt 2016, 11:43

Hallo zusammen,
ich versuche aus einem Datensatz (apple - 2 Spalten mit 18 Zeilen) mittels einer for Schleife, pro Schleifendurchlauf, 2 x 2 Matrizen zu erzeugen. Also Beispiel: beim ersten Durchlauf soll die Schleife die ersten beiden Zeilen "herausholen" und sie als 2 x 2 Matrix darstellen, beim zweiten Durchlauf soll die Schleife eine Zeile weiter gehen und die 2+3 Zeile herausholen und sie als Matrix darstellen, beim dritten Durchlauf soll die Schleife wieder eine Zeile weitergehen und die 3+4 Zeile zu einer Matrix zusammenbinden usw.... Von jeder der so erhaltenen Matrizen möchte ich dann im Anschluss eine Varianz Kovarianz Matrix und die Erwartungswerte berechnen. Folgender Code soll das Verlangte umsetzen, jedoch bekomme ich schon bei der Erzeugung der Matrizen Fehlermeldungen. Vielleicht könnte mir da jemand bei helfen....

data(apple)
x<-as.matrix(apple[,1])
y<-as.matrix(apple[,2])
for(i in 1:12){
data1[i]=cbind(x[i:(i+1),],y[i:(i+1),])
}

Wenn ich data1[1],data1[2] usw. aufrufe, sollten dort eigentich die entsprechenden Matrizen erscheinen.

Als Ergänzung habe ich "per Hand" das augeschrieben, was er korrekterweise mit der for Schleife durchführen soll:

data1=cbind(x[1:(1+1),],y[1:(1+1),])
fit1=mlest(data1)
data2=cbind(x[2:(2+1),],y[2:(2+1),])
fit2=mlest(data2)
data3=cbind(x[3:(3+1),],y[3:(3+1),])
fit3=mlest(data3)
data4=cbind(x[4:(4+1),],y[4:(4+1),])
fit4=mlest(data4)

Danke.
Martin1234
Grünschnabel
Grünschnabel
 
Beiträge: 3
Registriert: Do 13. Okt 2016, 13:53
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Matrix mit for Schleife

Beitragvon bele » Fr 14. Okt 2016, 13:39

Hallo Martin,

ich werde nicht schlau aus Deinem Code.
Das fängt erstmal damit an, dass Dein Code nicht reproduzierbar ist:
Code: Alles auswählen
> data(apple)
Warning message:
In data(apple) : Datensatz ‘apple’ nicht gefunden


Dann versuchst Du, x und y als etwas zu definieren, was nur eine Spalte hat, aber dennoch eine Matrix sein soll. Gibt es irgendeinen Grund, warum das nicht einfach Vektoren sein dürfen?

jedoch bekomme ich schon bei der Erzeugung der Matrizen Fehlermeldungen.

Ganz allgemeingültiger Tipp: Fehlermeldungen sollte man lesen. Oft ist ihr Wortlaut sehr hilfreich. Wenn man sie selbst nicht versteht und in einem Forum fragt: Dann auch die Fehlermeldung posten, damit die anderen sie lesen und vielleicht verstehen können.


Also bitte nochmal mit reproduzierbarem Beispiel, mit Fehlermeldung und mit dem erwünschten Ergebnis.

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5920
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1401 mal in 1387 Posts

Re: Matrix mit for Schleife

Beitragvon Martin1234 » Fr 14. Okt 2016, 21:25

Hallo Bernhard,

erstmal danke für deine Antwort.
Code: Alles auswählen
ich werde nicht schlau aus Deinem Code. Das fängt erstmal damit an, dass Dein Code nicht reproduzierbar ist:

Sorry, das muss daran gelegen haben, dass ich vergessen hatte das Package anzu geben:
Code: Alles auswählen
library(mvnmle)
data(apple)

Dann versuchst Du, x und y als etwas zu definieren, was nur eine Spalte hat, aber dennoch eine Matrix sein soll. Gibt es irgendeinen Grund, warum das nicht einfach Vektoren sein dürfen?

Das hab ich jetzt verbessert. Es gab keinen Grund weshalb das zwei getrennte Vektoren sein sollten, die ich hinterher ja doch zusammen füge.
Code: Alles auswählen
apple<-as.matrix(apple)

ich versuche mittels einer for Schleife, pro Schleifendurchlauf, 2 x 2 Matrizen zu erzeugen. Also Beispiel: beim ersten Durchlauf soll die Schleife die ersten beiden Zeilen "herausholen" und sie als 2 x 2 Matrix darstellen, beim zweiten Durchlauf soll die Schleife eine Zeile weiter gehen und die 2+3 Zeile herausholen und sie als Matrix darstellen, beim dritten Durchlauf soll die Schleife wieder eine Zeile weitergehen und die 3+4 Zeile zu einer Matrix zusammenbinden usw.... Von jeder der so erhaltenen Matrizen möchte ich dann im Anschluss eine Varianz Kovarianz Matrix und die Erwartungswerte berechnen..

Das möchte ich natürlich immer noch tun ;) Ohne Schleife würde mein Code, "per Hand" aufgeschrieben, wie folgt aussehen:
Code: Alles auswählen
data1=(apple[1:(1+1),])
fit1=mlest(data1)
data2=(apple[2:(2+1),])
fit2=mlest(data2)
data3=(apple[3:(3+1),])
fit3=mlest(data3)
data4=(apple[4:(4+1),])
fit4=mlest(data4)

Meine Schleife sieht folgendermaßen aus:
Code: Alles auswählen
data(apple)
apple<-as.matrix(apple)
for (i in 17){
subset<-apple[i:(i+1),]
matrix[i]<-list(subset)
}

Das Problem ist jetzt, dass mir als Output lediglich die letzte Matrix (also Zeile 17 +18) angegeben wird. Der Rest der Matrizen hat den Wert "NULL". :evil:

Vielleicht kannst du dir das ja nochmal ansehen. Danke nochmal
Martin1234
Grünschnabel
Grünschnabel
 
Beiträge: 3
Registriert: Do 13. Okt 2016, 13:53
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Matrix mit for Schleife

Beitragvon bele » Fr 14. Okt 2016, 22:15

Code: Alles auswählen
for (i in 17)

Da fehlt doch was 8-)
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5920
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1401 mal in 1387 Posts

Re: Matrix mit for Schleife

Beitragvon Martin1234 » Sa 15. Okt 2016, 01:26

hi, danke. richtig, ich sollte am besten eine liste vorher anlegen wo die matrizen drin gespeichert werden können... :twisted:
folgender code machte dann das verlangte:
n<-17
matrix<-list()
for(i in 1:n){
matrix[[i]]<-apple[i:(i+1),]
}


danke für die hilfe.
Martin1234
Grünschnabel
Grünschnabel
 
Beiträge: 3
Registriert: Do 13. Okt 2016, 13:53
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Matrix mit for Schleife

Beitragvon bele » Sa 15. Okt 2016, 08:32

Sehr gerne. Zuletzt noch ein Tipp: matrix ist der Name einer Funktion und zusätzlich machst Du es hier zum Variablennamen. Das geht zwar, ist aber nicht sehr geschickt. Wenn Du damit einen Syntaxfehler machst, kommen Fehlermeldungen, die Du nicht verstößt. Benenne Deine Matrix besser anders.

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5920
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1401 mal in 1387 Posts


Zurück zu Allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 5 Gäste