2017-11-16 1 views
3

A라는 벡터 목록에 54 개의 행렬을 넣어야합니다.이 목록의 처음 25 개 행렬을 행렬의 (i, j) 번째 요소를 제외한 0 행렬로 만듭니다. 1과 같아야합니다. 모든 행렬은 5x5입니다. for 루프를 사용하고 있지만 처음 25 행렬을 만드는 방법을 이해하지 못합니다.for 루프를 사용하여 행렬을 만들 때 R

이제 i = (i-1), j : (j-1)) 요소 = 1로 16 개의 0 행렬을 만들려고하므로 2의 크기가 2 인 1의 제곱이됩니다. 이를 위해 다음 코드를 사용했지만 'i'가 2보다 크거나 같은지 확인하고자합니다. 어떻게해야합니까?

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

'i'와'j' 무엇입니까? 또한, 질문은 무엇입니까? – Suren

+0

루프에서 뭔가 이상한 것 같습니다. 당신은'for (i in 1 : i)'에 대해 확신합니까? [이 재현 가능한 예제] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 통해 다른 사람들이 당신을 도울 수 있도록하십시오. –

+0

@MahakMotwani 나는 아래의 두 루프 중 하나가 당신이 무엇인지 생각한다. – Suren

답변

2

원하는대로 맞춰보세요. 이것이 당신이 원하는 것이 아니라면 알려주십시오. 그런 다음 편집하거나 제거 할 수 있습니다.

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 

삽입 한 행 현명 (하지 그것을 할 수있는 가장 우아한 방법) (에서 "요소 일 (I, J)"를)

# 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

하나의 요소를 선택하려면, 단지 A [i, j]를 사용하십시오. – Suren

+0

i : (i + 1), j : (j + 1) 1 = 6이지만 행렬은 5 x 5입니다. – Suren

+0

여러분은 문제를 더 잘 설명하려고 노력해야한다고 생각합니다. 원래 작성한 게시물을 편집 할 수 있습니다. – Suren

관련 문제