如何在R中使用while循环生成具有特定数字的矩阵?

时间:2012-10-06 01:16:56

标签: r loops while-loop

我使用以下 for 循环生成矩阵。
现在我尝试使用 while 循环生成相同的矩阵,但不知道如何操作。
有人能帮忙吗?非常感谢你。

i<- 1
j<- 1
m1<- matrix(0, nrow=5, ncol=5)
for(i in 1:5) {
for(j in i:5) {
m1[i,j]<- (j-i)*2+1
}
}
m1

2 个答案:

答案 0 :(得分:2)

i <- 1
j <- 1
m1 <- matrix(0, nrow = 5, ncol = 5)
while (i <= 5) {
    while (j <= 5) {
        m1[i, j] <- (j - i) * 2 + 1
        j <- j + 1
    }
    i <- i + 1
    j <- i
}
m1 

答案 1 :(得分:2)

这个怎么样:

> m       <- matrix(0, nrow=5, ncol=5)
> mu      <- upper.tri(m)
> m[mu]   <- apply(which(mu, arr.ind=TRUE), 1, function(x) (x[2] - x[1]) * 2 + 1)
> diag(m) <- 1
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    0    1    3    5    7
[3,]    0    0    1    3    5
[4,]    0    0    0    1    3
[5,]    0    0    0    0    1

编辑:抱歉,您刚意识到您不想对任务进行矢量化,而是重写代码以使用while而不是for。虽然我不明白为什么:)