次の 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
次の 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
これはどうですか:
> 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
。理由はわかりませんが:)
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