【问题标题】:How to use while loop in R to generate a matrix with specific number?如何在 R 中使用 while 循环生成具有特定数字的矩阵?
【发布时间】:2012-09-27 04:15:55
【问题描述】:

我已经使用下面的 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

【问题讨论】:

    标签: r loops while-loop


    【解决方案1】:
    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 
    

    【讨论】:

    • 谢谢!这真的很有帮助!
    【解决方案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。虽然我不知道为什么:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多