2017-11-16 5 views
3

Ich muss 54 Matrizen in eine Liste von Vektor namens A setzen. Ich möchte die ersten 25 Matrizen in dieser Liste zu Null Matrizen mit Ausnahme der (i, j) th Element der Matrix, die sollte gleich eins sein. Alle meine Matrizen sind 5x5. Ich benutze eine for-Schleife, aber ich verstehe nicht, wie man die ersten 25 Matrizen erstellt.für Schleife in Matrix mit R

Jetzt versuche ich 16 Matrizen von 0 mit (i: (i-1), j: (j-1)) th Element = 1, so dass es ein Quadrat von 1s der Größe 2 von 2 ist Dafür habe ich den folgenden Code verwendet, aber ich möchte sicherstellen, dass "i" größer ist als oder gleich 2. Wie kann ich das tun?

t<-26 
for(i in 1:5){ 
    for(j in 1:5){ 
    A <- matrix(0, nrow = 5, ncol = 5) 
    A[i:(i-1), j:(j-1)] <- 1 
    M[[l]] <- A 
    t <- t+1 
    } 
} 
A 
+0

Was sind 'I' und 'J' (in "(i, j) -te Element")? Auch, was ist die Frage? – Suren

+0

Etwas scheint in Ihrer Schleife zu sein. Bist du dir sicher 'für (i in 1: i)' ?? Gehen Sie auch durch [dieses reproduzierbare Beispiel] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example), so dass es für andere leicht ist, Ihnen zu helfen. –

+0

@MahakMotwani Ich denke, einer der beiden For Loops unten ist, was Sie suchen. – Suren

Antwort

2

Nur eine Vermutung, was Sie wollen. Lassen Sie mich wissen, wenn dies nicht das ist, was Sie wollen, dann kann ich es entweder bearbeiten oder entfernen.

A <- vector("list", 54) 
mat <- matrix(0, nrow = 5, ncol = 5) 

# assign mat to A and the 1 to the ith element of mat (column wise) 
for (i in 1:25) { 
    A[[i]] <- mat 
    A[[i]][i] <- 1 
} 

A[[1]] 
# [,1] [,2] [,3] [,4] [,5] 
# [1,] 1 0 0 0 0 
# [2,] 0 0 0 0 0 
# [3,] 0 0 0 0 0 
# [4,] 0 0 0 0 0 
# [5,] 0 0 0 0 0 

A[[2]] 
# [,1] [,2] [,3] [,4] [,5] 
# [1,] 0 0 0 0 0 
# [2,] 1 0 0 0 0 
# [3,] 0 0 0 0 0 
# [4,] 0 0 0 0 0 
# [5,] 0 0 0 0 0 

A[[25]] 
# [,1] [,2] [,3] [,4] [,5] 
# [1,] 0 0 0 0 0 
# [2,] 0 0 0 0 0 
# [3,] 0 0 0 0 0 
# [4,] 0 0 0 0 0 
# [5,] 0 0 0 0 1 

Insert 1 Reihe weise (nicht die eleganteste Art und Weise, es zu tun)

# assing 1 the ith element of mat (column wise) 
for (i in 1:25) { 
    mat_1 <- mat 
    mat_1[i] <- 1 
    A[[i]] <- t(mat_1) 
} 
+0

Um ein Element auszuwählen, verwenden Sie einfach 'A [i, j]' – Suren

+0

'i: (i + 1), j: (j + 1)' dies geht aus der Matrix ... wenn i = 5, i + 1 = 6, aber diese Matrix ist nur 5 mal 5. – Suren

+0

Ich denke, du solltest versuchen, dein Problem besser zu erklären. Sie können den ursprünglichen Post bearbeiten, den Sie erstellt haben. – Suren