Ich habe eine Matrix, die aus zwei Spalten und einer Anzahl (n) von Zeilen besteht, während jede Zeile einen Punkt mit den Koordinaten x und y (die beiden Spalten) darstellt. Dies ist, wie es aussieht (LINK):Schleife über Matrix mit n aufeinanderfolgenden Zeilen in R
V1 V2
146 17
151 19
153 24
156 30
158 36
163 39
168 42
173 44
...
jetzt, ich möchte eine Teilmenge von drei aufeinander folgenden Punkten verwenden, ausgehend von 1 etwas passend zu tun, um die Werte aus diesem Sitz in einer anderen Liste speichern, eine Höhle gehe zu den nächsten 3 Punkten und den nächsten drei, bis die Liste fertig ist. Etwas wie dieses:
Data_Fit_Kasa_1 <- CircleFitByKasa(Data[1:3,])
Data_Fit_Kasa_2 <- CircleFitByKasa(Data[3:6,])
....
Data_Fit_Kasa_n <- CircleFitByKasa(Data[i:i+2,])
Ich habe versucht, eine Schleife zu konstruieren, aber ich kann es nicht arbeiten lassen. R sagt mir entweder, dass es ein "unerwartetes"} in "}" gibt oder dass der "Index aus Bindungen besteht". Dies ist, was ich versucht habe:
minimal runnable Code
install.packages("conicfit")
library(conicfit)
CFKasa <- NULL
Data.Fit <- NULL
for (i in 1:length(Data)) {
row <- Data[i:(i+2),]
CFKasa <- CircleFitByKasa(row)
Data.Fit[i] <- CFKasa[3]
}
RStudio Version 0.99.902 – © 2009-2016 RStudio, Inc.; Win10 Edu.
Das dritte Element des angepassten Kreises (CFKasa [3]) stellt den Radius, das ist, was ich bin wirklich interessiert. Ich bin wirklich hier fest, bitte hilf mir.
Vielen Dank im Voraus!
Best, David
Thank you very much! –
Wie von Zheyuan Li erwähnt, müssen Sie darauf achten, dass Ihr Loop zu weit läuft. Zuerst, da du dein Problem beschrieben hast, gehe ich davon aus, dass Data zweidimensional ist, also nehme ich an, dass du stattdessen "length (Data [, 1])" haben möchtest. Zweite Sache nur die Schleife laufen bis 'Länge (Data [, 1]) - 2' –
Mein Ansatz wäre, die Daten in eine dreidimensionale Array und verwenden Sie "anwenden". Geben Sie ein reproduzierbares Beispiel an und ich zeige Ihnen vielleicht die Details. – Roland