Die seq
Funktion ermöglicht es Ihnen, Intervalle in einer Sequenz anzugeben, wie in @ d.b Kommentar angezeigt.
seq(0, 20, by = 5)
[1] 0 5 10 15 20
Der Ausgang von seq
kann dann die Schleife zum Antrieb verwendet werden. Hier wird i
als Endpunkt für eine Sequenz in jeder Iteration verwendet.
for (i in seq(5, 20, by = 5)) {
print(1:i)
}
[1] 1 2 3 4 5
[1] 1 2 3 4 5 6 7 8 9 10
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
zu Ihrem Beispiel angewandt wird, können die Sequenzen, die die Matrix
# Example matrix
m <- 10000
n <- 2
A <- matrix(1:(m*n), ncol = n)
head(A)
[,1] [,2]
[1,] 1 10001
[2,] 2 10002
[3,] 3 10003
[4,] 4 10004
[5,] 5 10005
[6,] 6 10006
# Iterate with a loop
jump <- 5 # I'm using 5 instead of 50
for (i in seq(jump, m, by = jump)) {
print(paste("i =", i))
print(A[1:i, ]) # subset the matrix
if (i > 15) break # limiting the output for readability
}
[1] "i = 5"
[,1] [,2]
[1,] 1 10001
[2,] 2 10002
[3,] 3 10003
[4,] 4 10004
[5,] 5 10005
[1] "i = 10"
[,1] [,2]
[1,] 1 10001
[2,] 2 10002
[3,] 3 10003
[4,] 4 10004
[5,] 5 10005
[6,] 6 10006
[7,] 7 10007
[8,] 8 10008
[9,] 9 10009
[10,] 10 10010
[1] "i = 15"
[,1] [,2]
[1,] 1 10001
[2,] 2 10002
[3,] 3 10003
[4,] 4 10004
[5,] 5 10005
[6,] 6 10006
[7,] 7 10007
[8,] 8 10008
[9,] 9 10009
[10,] 10 10010
[11,] 11 10011
[12,] 12 10012
[13,] 13 10013
[14,] 14 10014
[15,] 15 10015
[1] "i = 20"
[,1] [,2]
[1,] 1 10001
[2,] 2 10002
[3,] 3 10003
[4,] 4 10004
[5,] 5 10005
[6,] 6 10006
[7,] 7 10007
[8,] 8 10008
[9,] 9 10009
[10,] 10 10010
[11,] 11 10011
[12,] 12 10012
[13,] 13 10013
[14,] 14 10014
[15,] 15 10015
[16,] 16 10016
[17,] 17 10017
[18,] 18 10018
[19,] 19 10019
[20,] 20 10020
ich diese Frage von Beispieldaten profitieren würde denken, die Teilmenge verwendet werden. Kannst du es zu einer [reproduzierbaren Frage machen] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? (Zum Beispiel, fragen Sie wirklich nur nach 'rbind (A, emptymatrixhier)'?) Im Allgemeinen wird das Anfügen an Vektoren/arrays/dat.frames abgeraten, da es eine vollständige Kopie macht, was bei kleinen Objekten gut ist, aber mit größere Objekte werden Sie den Effekt fühlen, wenn sie wiederholt werden.In diesem Fall schlage ich vor, dass Sie vorne und cropping überzuordnen, wenn Sie fertig sind.) – r2evans
'lapply (seq (200, NROW (m), 50), Funktion (i) m [1 : i,]) ' –
einfach mit @ db Antwort löst Ihr Problem. – Wen