2017-07-18 5 views
0

erhöhen Ich habe ein 2D-Array A mit 10.000 Zeilen und 2 Spalten.Wie die Größe eines Arrays in R

Bei einem ersten Beispiel I nur die ersten 200 Zeilen des Feldes A. verwenden möchten Ich habe folgende: New_array = A [A (1: 200),]

Jedes Mal I erhöhen möchten die Anzahl der Zeilen nach 50. dh in der zweiten Iteration möchte ich Zugriff auf die 250 Zeilen von Matrix A, dritte Iteration 300 usw. haben, bis ich die ursprüngliche Größe der Matrix erreiche.

Ich weiß, dass ich eine for-Schleife erstellen muss, aber ich kämpfe. Jede Hilfe wird sehr geschätzt werden

+1

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

+3

'lapply (seq (200, NROW (m), 50), Funktion (i) m [1 : i,]) ' –

+0

einfach mit @ db Antwort löst Ihr Problem. – Wen

Antwort

1

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 
Verwandte Themen