1

我试图在 R 中创建一个循环,将我的矩阵替换为每 2 行中的 0 乘 1,但我只能创建一个编号为 1 的矩阵。我不知道如何快速正确地实现它!

R代码

i<-1
r<-1
l<-1
repeat{
    while(i<3){
        if(l<7) {
            r<-rbind(r,1) 
            l<-l+1
        }else{
            r<-cbind(r,1)
            i<-i+1
            l<-1
        }
    }
}

开始示例矩阵

0   0   0
0   0   0
0   0   0
0   0   0
0   0   0
0   0   0

最终矩阵:

1   0   0
1   0   0
0   1   0
0   1   0
0   0   1
0   0   1
4

1 回答 1

11

是否需要使用for循环?R 最好使用向量化语句,例如:

diag(3)[rep(1:3, each = 2), ]

#      [,1] [,2] [,3]
# [1,]    1    0    0
# [2,]    1    0    0
# [3,]    0    1    0
# [4,]    0    1    0
# [5,]    0    0    1
# [6,]    0    0    1
于 2013-08-28T18:37:20.397 回答