2016-05-09 5 views
0

Ich möchte Untergruppen für eine Matrix machen, und jede Untergruppe enthält die gleiche Menge an Spalte. Zum Beispiel gibt es eine Matrix mit 1000 Zeilen und 420 Spalten, und ich möchte in 35 Unter-Matrix in der Reihenfolge, wie die erste enthält die ersten 12 Spalten, und die zweite enthält die zweite 12 Spalten, und so weiter. Ich denke, ich könnte Funktion Iris verwenden. Bitte hilf mir!Split große Matrix in Teilmengen, R

iris[c()] 
+2

Können Sie bitte ein reproduzierbares Beispiel teilen? 'Iris' ist ein Datensatz, keine Funktion. – mtoto

Antwort

3

Nicht sicher, ob dies ist, was Sie nach, aber hier ist ein reproduzierbares Beispiel:

# Define matrix 
M = matrix( 
    c(1:20), 
    nrow=2, 
    ncol=10) 

# Split into 5 submatrices of equal size 
lapply(split(M, rep(1:5, each = 4)), matrix, ncol = 2) 
$`1` 
    [,1] [,2] 
[1,] 1 3 
[2,] 2 4 

$`2` 
    [,1] [,2] 
[1,] 5 7 
[2,] 6 8 

$`3` 
    [,1] [,2] 
[1,] 9 11 
[2,] 10 12 

$`4` 
    [,1] [,2] 
[1,] 13 15 
[2,] 14 16 

$`5` 
    [,1] [,2] 
[1,] 17 19 
[2,] 18 20 
+0

Danke mtoto für die Antwort! In Bezug auf Ihr Beispiel der Matrix M, Wenn ich die große Matrix M in 5 Unter-Matrix, aber mit verschiedenen Größen teilen möchte, wie die erste Matrix die ersten 4 Werte enthält, enthält die zweite die ersten 8 Werte (einschließlich der ersten Matrix), die dritte enthält die ersten 12 Werte (einschließlich der ersten und zweiten Matrix) und so weiter ... Bis ich die ganze große Matrix bekommen habe. Wie könnte ich das tun? Danke – Amanda

+1

Wenn Sie eine neue Frage haben, fragen Sie bitte in einem neuen Post, anstatt zu versuchen, bestehende zu aktualisieren. – mtoto

3

Sie können Ihre 1000 × 420-Matrix in eine 1000 × 12 × 35 Matrix drehen mit

dim(x) <- c(1000, 12, 35) 

wobei x die ursprüngliche Matrix ist. Dann gibt x[, , 1] Ihnen die erste Untermatrix 1000 × 12, x[, , 2] die zweite Untermatrix und so weiter.